Anzeige
Anzeige
Artikel

Aufbau einer standardgemäßen und barrierefreien Navigationsleiste: CSS-Tricks für TYPO3

Ergänzend zu dem Artikel von Jochen Weiland über den Aufbau einer Website mit TYPO3 in dieser Ausgabe, soll hier am Beispiel einer Navigationsleiste die Verwendung von CSS in TYPO3 vermittelt werden.

6 Min.
Artikel merken
Anzeige
Anzeige

CSS mit TYPO3 verwenden

Generell lassen sich CSS-Anweisungen auf drei Arten in HTML-Dokumente einbinden:

1. Als Inline-Styles für HTML-Elemente:

HTML

<strong style="font-weight: bold;">Text</strong>

Listing 1

Anzeige
Anzeige

2. Als Styles im Kopfbereich der HTML-Datei:

HTML

<style> 
   strong { font-weight: bold; }
</style>

Listing 2

3. Als verlinktes oder eingebundenes Stylesheet:

Anzeige
Anzeige

HTML

<link xhref="stylesheet.css" rel="stylesheet" type="text/css" />
<style>
   @import url(stylesheet.css);
</style>

Listing 3

Während die erste Methode nur in wenigen Fällen geeignet ist, kommen
bei TYPO3-Websites Styles im Kopfbereich und verlinkte Stylesheets
häufig vor. Die TypoScript-Anweisung zum Einbinden eines Stylesheets im Kopfbereich lautet:

Anzeige
Anzeige

TYPOSCRIPT

page.stylesheet = stylesheet.css

Listing 4

Diese Methode hat jedoch einige Nachteile – so lassen sich keine
individuellen Titel oder rel-Attribute für die Stylesheets vergeben. Stattdessen wird
auf eine universellere Methode zurückgriffen, mit der beliebige
Zeichenfolgen in den Seitenkopf
geschrieben werden können:

TYPOSCRIPT

page.headerData.5 = TEXT
page.headerData.5.value (
   <link rel="stylesheet" type="text/css" xhref="stylesheet.css"  
   media="screen, projection" title="Standardlayout" />
)

Listing 5

Viele TYPO3-Websites erkennt man beim Blick in den Quellcode (neben
dem TYPO3-Hinweiskommentar) an einem Mischmasch aus CSS-Anweisungen im
Seitenkopf, die durch diverse Extensions eingefügt wurden. Mit der
folgende TypoScript-Notation verlagern Sie diese Styles in ein extern
verlinktes Stylesheet, das von TYPO3 verwaltet wird:

Anzeige
Anzeige

TYPOSCRIPT

page.config.inlineStyle2TempFile = 1

Listing 6

Wenn ohnehin eigene CSS-Anweisungen verwendet werden,
können für jede Extension die mitgelieferten Standard-Styles deaktiviert bzw. eigene Styles an deren Stelle gesetzt werden:

TYPOSCRIPT

plugin.tx_nameDesPlugins._CSS_DEFAULT_STYLE >

Listing 7

Ein gestaltetes Textmenü – standardtreu, barrierefrei und schick

Durch den Einsatz von CSS müssen barrierefreie und semantisch korrekte
Dokumente nicht unbedingt unansehnlich sein – hier demonstriert am
Beispiel einer horizontal gestalteten Reiternavigation ähnlich der
von Amazon – nur besser.

Eine solche oder ähnliche Aufgabe wird in vielen TYPO3-Umgebungen
mittels „GMENU“ gelöst. Das aus Grafiken aufgebaute Menü ist
allerdings alles andere als barrierefrei und lädt auch deutlich
langsamer als ein Textmenü. Mit CSS kann eine anspruchsvolle
Optik realisiert und ein optimaler HTML-Code erhalten werden. Der am
besten geeignete Code für ein Menü ist das Element „ul“ (eine
ungeordnete Liste). Denn was ist ein Menü anderes als eine Liste
von Links.

Anzeige
Anzeige

HTML

<ul>
   <li><a xhref="..">Auswahl 1</a></li>
   <li><a xhref="..">Auswahl 2</a></li>
   <li><a xhref="..">Auswahl 3</a></li>
</ul>

Listing 8

Eine solche Liste lässt sich auch schachteln, um mehrere Menüebenen zu realisieren:

HTML

<ul>
   <li><a xhref=“..“>Auswahl 1</a></li>
   <ul>
      <li><a xhref=“..“>Auswahl 1.1</a></li>
      <li><a xhref=“..“>Auswahl 1.2</a></li>
   </ul>
   <li><a xhref=“..“>Auswahl 2</a></li>
</ul>

Listing 9

Außerdem bietet eine Liste genügend Elemente zum Zuweisen von Styles
(„ul“, „li“ und „a“), sodass wir weitgehend auf
Klassen oder „div“-Container verzichten können. Bisher sieht diese
Liste relativ gewöhnlich aus. Mit den ersten
CSS-Anweisungen ändert sich dies aber schnell.

HTML-Liste.

HTML-Liste.

CSS

ul {
   padding-top: 1em;
   background-color: #EEF0F2;
   list-style: none;
}
li {
   float: left;    
}

Listing 10

Nun sitzen die Menüpunkte zumindest in einer horizontalen
Reihe. Besonders ansehnlich sieht das zugegebenermaßen allerdings noch nicht aus.

Anzeige
Anzeige

gefloatete Liste.

gefloatete Liste.

Die eigentlichen Reiter werden aus den a-Elementen gebildet:

CSS

ul a {
   float: left;
   display: block;
   text-decoration: none;
   background-color: #C4CCD2;
   border: 1px solid #58646E;
   border-bottom: none;
   padding: 5px 10px;
   margin-right: 2px;
   color: #000;
}

Listing 11

Durch das „Floaten“ der „li“-Elemente dehnt sich der Hintergrund der Liste
nicht um sie aus – das wird dadurch behoben, dass die „ul“-Elemente ebenfalls
mit einem „float: left“ versehen werden. Sie müssen jetzt allerdings dafür
sorgen, dass das nächstfolgende Element nach der Liste das Floaten mit
„clear: left“ wieder auflöst. Außerdem werden mit der folgenden Anweisung alle Abstände auf „0“ gesetzt:

CSS

* {
   margin: 0; 
   padding: 0;
}

Listing 12

Das Endergbnis ist schon erkennbar.

Das Endergbnis ist schon erkennbar.

Auf diese Weise werden Unterschiede in der
Darstellung der verschiedenen Browser vermieden, die unterschiedliche
Voreinstellungen für Abstände haben.

Anzeige
Anzeige

Hintergrundgrafiken in Photoshop.

Hintergrundgrafiken in Photoshop.

Um einen schönen Verlauf in den Reitern zu erhalten,
der
sich beim „rollOver“ und für den aktuellen Reiter verändert, muss zum
ersten Mal ein Grafikprogramm (z.B. Photoshop) bemüht werden. Eine 100
Pixel
hohe und 4 Pixel breite Grafik wird angelegt, die einen Verlauf eines
mittleren Blautons in ein sehr helles Blau enthält – für den rollOver
wird ein Verlauf von hellgrau nach weiß verwendet. Die Grafiken werden
als „t3n-bgon.jpg“ und „t3nbg-off.jpg“ gespeichert. Im Stylesheet wird nun
die Festlegung der Eigenschaft „background-color“ für das „ul“-Element
durch folgenden CSS-Code ersetzt:

CSS

background: #C4CCD2 url(t3n-bgoff.jpg) repeat-x center left;

Listing 13

Damit wird die erstellte Grafik als Hintergrund festgelegt, der
sich horizontal wiederholt und an der linken Seite vertikal zentriert
angezeigt wird.

Für den rollOver-Effekt und die Kennzeichnung der aktuellen Sektion wird nur Folgendes ergänzt:

Anzeige
Anzeige

CSS

ul a:hover, ul a.akt {
   background-image: url(t3n-bgon.jpg);
}

Listing 14

Zum Abschluss wird noch eine Linie zwischen Menü und Reiter
gesetzt. Beim „rollOver“ soll diese Linie durchbrochen werden, so dass
nicht auf die eigentlich naheliegende Eigenschaft „border“ für das
„ul“-Element zurückgegriffen wird. Stattdessen wird eine 1 Pixel
hohe Grafik verwendet und mit folgender Zeile für das „ul“-Element deklariert:

CSS

background: #EEF0F2 url(t3n-linie.gif) repeat-x bottom left;

Listing 15

Auf diese Weise kann eine vollständig skalierbare
Reiter-Navigation realisiert werden. Als Nebeneffekt besitzt diese
sogar ein semantisch perfektes HTML-Markup und kann zurecht als
barrierefrei bezeichnet werden. Zur Einbindung in TYPO3 wird ergänzend
lediglich ein TMENU benötigt:

TYPOSCRIPT

lib.hmenue = HMENU
lib.hmenue.1 = TMENU
lib.hmenue.1 {
   noBlur = 1
   expAll = 1
   wrap = <ul >|</ul>
   NO.wrapItemAndSub = <li>|</li>
   ACT = 1
   ACT.wrapItemAndSub = <li class="akt">|</li>       
   CUR = 1
   CUR.doNotLinkIt = 1
   CUR.wrapItemAndSub = <span>|</span>
}

Listing 16

Der TypoScript-Code aus Listing 16 erzeugt eine einfache Liste, in der die
aktuelle Sektion durch eine zusätzliche Klasse „akt“ markiert ist und
die aktuelle Seite nicht verlinkt wird. Um diese Stadien auch im Stylesheet abzubilden, muss kaum
noch Arbeit geleistet werden. Lediglich eine Erweiterung der Selektoren ist
erforderlich:

Anzeige
Anzeige

CSS

ul a, ul span {
   ...
}

ul a:hover, ul .akt a, ul span {
   ...
}

Listing 17

Durch den kreativen Einsatz von Hintergrundbildern lassen sich viele
Effekte per CSS erzeugen – so sind zum Beispiel auch Buttons oder Kästen mit
abgerundeten Ecken möglich, die mit der Schriftgröße skalieren.

Sie finden den vollständigen und kommentierten Quellcode auf www.typo3-praxis.de unter dem LinkCode 067.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige