Navigation mit Grafiken - Sprite: Unterschied zwischen den Versionen

Aus Contao Community Documentation

K (Geshi-Anpassung)
 
(Eine dazwischenliegende Version von einem Benutzer wird nicht angezeigt)
Zeile 18: Zeile 18:
  
 
[[Datei:Startseite.gif]]
 
[[Datei:Startseite.gif]]
 
 
  
 
Die Grafik ist 150 Pixel breit und 60 Pixel hoch (30 + 30 Pixel = Normal- plus Hoverzustand)
 
Die Grafik ist 150 Pixel breit und 60 Pixel hoch (30 + 30 Pixel = Normal- plus Hoverzustand)
Zeile 37: Zeile 35:
  
 
Für alle Seiten innerhalb der Seitenstruktur werden die entsprechenden CSS-Klassen eingesetzt.
 
Für alle Seiten innerhalb der Seitenstruktur werden die entsprechenden CSS-Klassen eingesetzt.
 
  
 
'''CSS-Definition für das Menü in der linken Spalte:'''
 
'''CSS-Definition für das Menü in der linken Spalte:'''
#left .mod_navigation ul
+
 
{
+
<source lang="css">
 +
#left .mod_navigation ul
 +
{
 +
  margin:0;
 +
  padding:0;
 +
  list-style-type:none;
 +
}
 +
 
 +
#left .mod_navigation li
 +
{
 +
  margin:0;
 +
  padding:0;
 +
}
 +
</source>
 +
 
 +
CSS-Definitionen für den Menüpunkt "Startseite":
 +
 
 +
<source lang="css">
 +
#left .mod_navigation .startseite a,
 +
#left .mod_navigation .startseite a:link,
 +
#left .mod_navigation .startseite a:visited
 +
{
 +
  height:30px;
 +
  display:block;
 +
  text-indent:-3000px;
 +
  background:url(tl_files/menue/startseite.gif) no-repeat top left;
 +
}
 +
 
 +
#left .mod_navigation .startseite a:hover
 +
{
 +
  background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
 +
}
 +
 
 +
#left .mod_navigation li.startseite.active
 +
{
 +
  height:30px;
 +
  text-indent:-3000px;
 +
  background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
 +
}
 +
</source>
 +
 
 +
Für jeden Link wird die Höhe des Elements (hier im Beispiel: 30px) definiert. Mit der Eigenschaft "text-indent:-3000px;" wird der normale Textlink 3000 Pixel nach links ausserhalb des Browserfensters verschoben und somit optisch unsichtbar. Für den Normalzustand des Menüpunktes sitzt die Hintergrundgrafik auf den Koordinaten 0 0 (oder left top). Für den Hover- und Aktivzustand wird die Hintergrundgrafik um 30 Pixel nach oben (-30px) verschoben, da die Grafik so angelegt wurde, dass der aktive Teil unter dem des normalen Zustandes angeordnet ist.
 +
 
 +
'''Darstellung im Browser:'''
 +
 
 +
[[Datei:menue_im_browser.gif]]
 +
 
 +
'''Vollständige CSS-Definitionen für die 4 Menüpunkte:'''
 +
 
 +
<source lang="css">
 +
/* Definition Menue */
 +
 
 +
#left .mod_navigation
 +
{
 +
  width:150px;
 +
}
 +
 
 +
#left .mod_navigation ul
 +
{
 
   margin:0;
 
   margin:0;
 
   padding:0;
 
   padding:0;
 
   list-style-type:none;
 
   list-style-type:none;
}
+
}
+
 
#left .mod_navigation li
+
#left .mod_navigation li
{
+
{
 
   margin:0;
 
   margin:0;
 
   padding:0;
 
   padding:0;
}
+
}
  
CSS-Definitionen für den Menüpunkt "Startseite":
+
/* Definition Startseite */
#left .mod_navigation .startseite a,
+
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:link,
+
#left .mod_navigation .startseite a:link,
#left .mod_navigation .startseite a:visited
+
#left .mod_navigation .startseite a:visited
{
+
{
 
   height:30px;
 
   height:30px;
 
   display:block;
 
   display:block;
 
   text-indent:-3000px;
 
   text-indent:-3000px;
 
   background:url(tl_files/menue/startseite.gif) no-repeat top left;
 
   background:url(tl_files/menue/startseite.gif) no-repeat top left;
}
+
}
+
 
#left .mod_navigation .startseite a:hover
+
#left .mod_navigation .startseite a:hover
{
+
{
 
   background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
 
   background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
}
+
}
+
 
#left .mod_navigation li.startseite.active
+
#left .mod_navigation li.startseite.active
{
+
{
 
   height:30px;
 
   height:30px;
 
   text-indent:-3000px;
 
   text-indent:-3000px;
 
   background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
 
   background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
}
+
}
  
Für jeden Link wird die Höhe des Elements (hier im Beispiel: 30px) definiert. Mit der Eigenschaft "text-indent:-3000px;" wird der normale Textlink 3000 Pixel nach links ausserhalb des Browserfensters verschoben und somit optisch unsichtbar. Für den Normalzustand des Menüpunktes sitzt die Hintergrundgrafik auf den Koordinaten 0 0 (oder left top). Für den Hover- und Aktivzustand wird die Hintergrundgrafik um 30 Pixel nach oben (-30px) verschoben, da die Grafik so angelegt wurde, dass der aktive Teil unter dem des normalen Zustandes angeordnet ist.
+
/* Definition Referenzen */
 +
#left .mod_navigation .referenzen a,
 +
#left .mod_navigation .referenzen a:link,
 +
#left .mod_navigation .referenzen a:visited
 +
{
 +
  height:30px;
 +
  display:block;
 +
  text-indent:-3000px;
 +
  background:url(tl_files/menue/referenzen.gif) no-repeat top left;
 +
}
  
'''Darstellung im Browser:'''
+
#left .mod_navigation .referenzen a:hover
 +
{
 +
  background:url(tl_files/menue/referenzen.gif) no-repeat 0 -30px;
 +
}
  
[[Datei:menue_im_browser.gif]]
+
#left .mod_navigation li.referenzen.active
 +
{
 +
  height:30px;
 +
  text-indent:-3000px;
 +
  background:url(tl_files/menue/referenzen.gif) no-repeat 0 -30px;
 +
}
  
 +
/* Definition Portfolio */
 +
#left .mod_navigation .portfolio a,
 +
#left .mod_navigation .portfolio a:link,
 +
#left .mod_navigation .portfolio a:visited
 +
{
 +
  height:30px;
 +
  display:block;
 +
  text-indent:-3000px;
 +
  background:url(tl_files/menue/portfolio.gif) no-repeat top left;
 +
}
  
'''Vollständige CSS-Definitionen für die 4 Menüpunkte:'''
+
#left .mod_navigation .portfolio a:hover
/* Definition Menue */
+
{
+
  background:url(tl_files/menue/portfolio.gif) no-repeat 0 -30px;
#left .mod_navigation
+
}
{
+
 
    width:150px;
+
#left .mod_navigation li.portfolio.active
}
+
{
+
  height:30px;
#left .mod_navigation ul
+
  text-indent:-3000px;
{
+
  background:url(tl_files/menue/portfolio.gif) no-repeat 0 -30px;
    margin:0;
+
}
    padding:0;
+
 
    list-style-type:none;
+
/* Definition Kontakt */
}
+
#left .mod_navigation .kontakt a,
+
#left .mod_navigation .kontakt a:link,
#left .mod_navigation li
+
#left .mod_navigation .kontakt a:visited
{
+
{
    margin:0;
+
  height:30px;
    padding:0;
+
  display:block;
}
+
  text-indent:-3000px;
+
  background:url(tl_files/menue/kontakt.gif) no-repeat top left;
/* Definition Startseite */
+
}
#left .mod_navigation .startseite a,
+
 
#left .mod_navigation .startseite a:link,
+
#left .mod_navigation .kontakt a:hover
#left .mod_navigation .startseite a:visited
+
{
{
+
  background:url(tl_files/menue/kontakt.gif) no-repeat 0 -30px;
    height:30px;
+
}
    display:block;
+
 
    text-indent:-3000px;
+
#left .mod_navigation li.kontakt.active
    background:url(tl_files/menue/startseite.gif) no-repeat top left;
+
{
}
+
  height:30px;
+
  text-indent:-3000px;
#left .mod_navigation .startseite a:hover
+
  background:url(tl_files/menue/kontakt.gif) no-repeat 0 -30px;
{
+
}
    background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
+
</source>
}
+
+
#left .mod_navigation li.startseite.active
+
{
+
    height:30px;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
+
}
+
+
/* Definition Referenzen */
+
#left .mod_navigation .referenzen a,
+
#left .mod_navigation .referenzen a:link,
+
#left .mod_navigation .referenzen a:visited
+
{
+
    height:30px;
+
    display:block;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/referenzen.gif) no-repeat top left;
+
}
+
+
#left .mod_navigation .referenzen a:hover
+
{
+
    background:url(tl_files/menue/referenzen.gif) no-repeat 0 -30px;
+
}
+
+
#left .mod_navigation li.referenzen.active
+
{
+
    height:30px;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/referenzen.gif) no-repeat 0 -30px;
+
}
+
+
/* Definition Portfolio */
+
#left .mod_navigation .portfolio a,
+
#left .mod_navigation .portfolio a:link,
+
#left .mod_navigation .portfolio a:visited
+
{
+
    height:30px;
+
    display:block;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/portfolio.gif) no-repeat top left;
+
}
+
+
#left .mod_navigation .portfolio a:hover
+
{
+
    background:url(tl_files/menue/portfolio.gif) no-repeat 0 -30px;
+
}
+
+
#left .mod_navigation li.portfolio.active
+
{
+
    height:30px;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/portfolio.gif) no-repeat 0 -30px;
+
}
+
+
/* Definition Kontakt */
+
#left .mod_navigation .kontakt a,
+
#left .mod_navigation .kontakt a:link,
+
#left .mod_navigation .kontakt a:visited
+
{
+
    height:30px;
+
    display:block;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/kontakt.gif) no-repeat top left;
+
}
+
+
#left .mod_navigation .kontakt a:hover
+
{
+
    background:url(tl_files/menue/kontakt.gif) no-repeat 0 -30px;
+
}
+
+
#left .mod_navigation li.kontakt.active
+
{
+
    height:30px;
+
    text-indent:-3000px;
+
    background:url(tl_files/menue/kontakt.gif) no-repeat 0 -30px;
+
}
+
 
   
 
   
 
Die Schreibweise lässt sich noch weiter reduzieren / vereinfachen, in dem die CSS-Definitionen wie folgt angepasst werden: Diese vereinfachte / zusammenfassende Schreibweise funktioniert bei Spritegrafiken mit 2 Zuständen und gleichen Größen. Danke für den Tipp Nina :-)
 
Die Schreibweise lässt sich noch weiter reduzieren / vereinfachen, in dem die CSS-Definitionen wie folgt angepasst werden: Diese vereinfachte / zusammenfassende Schreibweise funktioniert bei Spritegrafiken mit 2 Zuständen und gleichen Größen. Danke für den Tipp Nina :-)
  
/* Definition Menue */
+
<source lang="css">
#left .mod_navigation {
+
/* Definition Menue */
    width:150px;
+
#left .mod_navigation {
}
+
  width:150px;
+
}
#left .mod_navigation ul {
+
 
    margin:0;
+
#left .mod_navigation ul {
    padding:0;
+
  margin:0;
    list-style-type:none;
+
  padding:0;
}
+
  list-style-type:none;
+
}
#left .mod_navigation li {
+
 
    margin:0;
+
#left .mod_navigation li {
    padding:0;
+
  margin:0;
}
+
  padding:0;
+
}
#left .mod_navigation a,
+
 
#left .mod_navigation span {
+
#left .mod_navigation a,
    height:30px;
+
#left .mod_navigation span {
    display:block;
+
  height:30px;
    text-indent:-3000px;
+
  display:block;
    background-repeat: none;
+
  text-indent:-3000px;
}
+
  background-repeat: none;
+
}
#left .mod_navigation a:link,
+
 
#left .mod_navigation a:visited {
+
#left .mod_navigation a:link,
    background-position: top left;
+
#left .mod_navigation a:visited {
}
+
  background-position: top left;
+
}
#left .mod_navigation a:hover,
+
 
#left .mod_navigation a:focus,
+
#left .mod_navigation a:hover,
#left .mod_navigation a:active,
+
#left .mod_navigation a:focus,
#left .mod_navigation span {
+
#left .mod_navigation a:active,
    background-position: 0 -30px;
+
#left .mod_navigation span {
}
+
  background-position: 0 -30px;
+
}
/* Definition der einzelnen Bilder */
+
 
#left .mod_navigation .startseite a,
+
/* Definition der einzelnen Bilder */
#left .mod_navigation .startseite span {
+
#left .mod_navigation .startseite a,
    background-image: url(tl_files/menue/startseite.gif);
+
#left .mod_navigation .startseite span {
}
+
  background-image: url(tl_files/menue/startseite.gif);
+
}
#left .mod_navigation .referenzen a,
+
 
#left .mod_navigation .referenzen span {
+
#left .mod_navigation .referenzen a,
    background-image: url(tl_files/menue/referenzen.gif);
+
#left .mod_navigation .referenzen span {
}
+
  background-image: url(tl_files/menue/referenzen.gif);
+
}
#left .mod_navigation .portfolio a,
+
 
#left .mod_navigation .portfolio span {
+
#left .mod_navigation .portfolio a,
    background-image: url(tl_files/menue/portfolio.gif);
+
#left .mod_navigation .portfolio span {
}
+
  background-image: url(tl_files/menue/portfolio.gif);
+
}
#left .mod_navigation .kontakt a,
+
#left .mod_navigation .kontakt span {
+
    background-image: url(tl_files/menue/kontakt.gif);
+
}
+
  
 +
#left .mod_navigation .kontakt a,
 +
#left .mod_navigation .kontakt span {
 +
  background-image: url(tl_files/menue/kontakt.gif);
 +
}
 +
</source>
  
 
'''Sprite-Navigation mit einer Grafik'''
 
'''Sprite-Navigation mit einer Grafik'''
Zeile 261: Zeile 267:
  
 
Um eine Sprite-Navigation aus einer Grafik für das Menü zu nutzen, wird eine komplette Menügrafik erstellt: Diese sieht dann so aus:
 
Um eine Sprite-Navigation aus einer Grafik für das Menü zu nutzen, wird eine komplette Menügrafik erstellt: Diese sieht dann so aus:
 
 
  
 
Die Grafik ist nun 600 Pixel breit (4 x 150px) und 60 Pixel hoch (30 + 30 Pixel = Normal- plus Hoverzustand). Die jeweiligen Zustände des Menüs werden erneut durch das Verschieben der Koordinaten erreicht. Hierzu wird dann nur noch eine Grafik geladen anstatt wie im oberen Beispiel 4 Grafiken.
 
Die Grafik ist nun 600 Pixel breit (4 x 150px) und 60 Pixel hoch (30 + 30 Pixel = Normal- plus Hoverzustand). Die jeweiligen Zustände des Menüs werden erneut durch das Verschieben der Koordinaten erreicht. Hierzu wird dann nur noch eine Grafik geladen anstatt wie im oberen Beispiel 4 Grafiken.
Zeile 276: Zeile 280:
 
Die dafür veränderten CSS-Definitionen:
 
Die dafür veränderten CSS-Definitionen:
  
#left .mod_navigation
+
<source lang="css">
{
+
#left .mod_navigation
    width:150px;
+
{
}
+
  width:150px;
+
}
#left .mod_navigation ul
+
 
{
+
#left .mod_navigation ul
    margin:0;
+
{
    padding:0;
+
  margin:0;
    list-style-type:none;
+
  padding:0;
}
+
  list-style-type:none;
+
}
#left .mod_navigation li
+
 
{
+
#left .mod_navigation li
    margin:0;
+
{
    padding:0;
+
  margin:0;
}
+
  padding:0;
+
}
#left .mod_navigation .startseite a,
+
 
#left .mod_navigation .startseite a:link,
+
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:visited
+
#left .mod_navigation .startseite a:link,
{
+
#left .mod_navigation .startseite a:visited
    height:30px;
+
{
    display:block;
+
  height:30px;
    text-indent:-3000px;
+
  display:block;
    background:url(tl_files/menue/menue.gif) no-repeat top left;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat top left;
+
}
#left .mod_navigation .startseite a:hover
+
 
{
+
#left .mod_navigation .startseite a:hover
    background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
+
}
#left .mod_navigation li.startseite.active
+
 
{
+
#left .mod_navigation li.startseite.active
    height:30px;
+
{
    text-indent:-3000px;
+
  height:30px;
    background:url(tl_files/menue/menue.gif) no-repeat left -30px;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
+
}
#left .mod_navigation .referenzen a,
+
 
#left .mod_navigation .referenzen a:link,
+
#left .mod_navigation .referenzen a,
#left .mod_navigation .referenzen a:visited
+
#left .mod_navigation .referenzen a:link,
{
+
#left .mod_navigation .referenzen a:visited
    height:30px;
+
{
    display:block;
+
  height:30px;
    text-indent:-3000px;
+
  display:block;
    background:url(tl_files/menue/menue.gif) no-repeat -150px 0;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -150px 0;
+
}
#left .mod_navigation .referenzen a:hover
+
 
{
+
#left .mod_navigation .referenzen a:hover
    background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
+
}
#left .mod_navigation li.referenzen.active
+
 
{
+
#left .mod_navigation li.referenzen.active
    height:30px;
+
{
    text-indent:-3000px;
+
  height:30px;
    background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
+
}
#left .mod_navigation .portfolio a,
+
 
#left .mod_navigation .portfolio a:link,
+
#left .mod_navigation .portfolio a,
#left .mod_navigation .portfolio a:visited
+
#left .mod_navigation .portfolio a:link,
{
+
#left .mod_navigation .portfolio a:visited
    height:30px;
+
{
    display:block;
+
  height:30px;
    text-indent:-3000px;
+
  display:block;
    background:url(tl_files/menue/menue.gif) no-repeat -300px 0;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -300px 0;
+
}
#left .mod_navigation .portfolio a:hover
+
 
{
+
#left .mod_navigation .portfolio a:hover
    background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
+
}
#left .mod_navigation li.portfolio.active
+
 
{
+
#left .mod_navigation li.portfolio.active
    height:30px;
+
{
    text-indent:-3000px;
+
  height:30px;
    background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
+
}
#left .mod_navigation .kontakt a,
+
 
#left .mod_navigation .kontakt a:link,
+
#left .mod_navigation .kontakt a,
#left .mod_navigation .kontakt a:visited
+
#left .mod_navigation .kontakt a:link,
{
+
#left .mod_navigation .kontakt a:visited
    height:30px;
+
{
    display:block;
+
  height:30px;
    text-indent:-3000px;
+
  display:block;
    background:url(tl_files/menue/menue.gif) no-repeat -450px 0;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -450px 0;
+
}
#left .mod_navigation .kontakt a:hover
+
 
{
+
#left .mod_navigation .kontakt a:hover
    background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
+
}
#left .mod_navigation li.kontakt.active
+
 
{
+
#left .mod_navigation li.kontakt.active
    height:30px;
+
{
    text-indent:-3000px;
+
  height:30px;
    background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
+
  text-indent:-3000px;
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
 +
}
 +
</source>
  
 
Verkürzte Schreibweise dafür:
 
Verkürzte Schreibweise dafür:
  
/* Definition Menue */
+
<source lang="css">
#left .mod_navigation
+
/* Definition Menue */
{
+
#left .mod_navigation
    width:150px;
+
{
}
+
  width:150px;
+
}
#left .mod_navigation ul
+
 
{
+
#left .mod_navigation ul
    margin:0;
+
{
    padding:0;
+
  margin:0;
    list-style-type:none;
+
  padding:0;
}
+
  list-style-type:none;
+
}
#left .mod_navigation li
+
 
{
+
#left .mod_navigation li
    margin:0;
+
{
    padding:0;
+
  margin:0;
}
+
  padding:0;
+
}
#left .mod_navigation a,
+
 
#left .mod_navigation span
+
#left .mod_navigation a,
{
+
#left .mod_navigation span
    height:30px;
+
{
    display:block;
+
  height:30px;
    text-indent:-3000px;
+
  display:block;
    background-repeat: none;
+
  text-indent:-3000px;
}
+
  background-repeat: none;
+
}
#left .mod_navigation .startseite a,
+
 
#left .mod_navigation .startseite a:link,
+
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:visited
+
#left .mod_navigation .startseite a:link,
{
+
#left .mod_navigation .startseite a:visited
    background:url(tl_files/menue/menue.gif) no-repeat top left;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat top left;
+
}
#left .mod_navigation .startseite a:hover,
+
 
#left .mod_navigation .startseite a:focus,
+
#left .mod_navigation .startseite a:hover,
#left .mod_navigation .startseite a:active,
+
#left .mod_navigation .startseite a:focus,
#left .mod_navigation .startseite span
+
#left .mod_navigation .startseite a:active,
{
+
#left .mod_navigation .startseite span
    background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
+
}
#left .mod_navigation .referenzen a,
+
 
#left .mod_navigation .referenzen a:link,
+
#left .mod_navigation .referenzen a,
#left .mod_navigation .referenzen a:visited
+
#left .mod_navigation .referenzen a:link,
{
+
#left .mod_navigation .referenzen a:visited
    background:url(tl_files/menue/menue.gif) no-repeat -150px 0;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -150px 0;
+
}
#left .mod_navigation .referenzen a:hover,
+
 
#left .mod_navigation .referenzen a:focus,
+
#left .mod_navigation .referenzen a:hover,
#left .mod_navigation .referenzen a:active,
+
#left .mod_navigation .referenzen a:focus,
#left .mod_navigation .referenzen span
+
#left .mod_navigation .referenzen a:active,
{
+
#left .mod_navigation .referenzen span
    background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
+
}
#left .mod_navigation .portfolio a,
+
 
#left .mod_navigation .portfolio a:link,
+
#left .mod_navigation .portfolio a,
#left .mod_navigation .portfolio a:visited
+
#left .mod_navigation .portfolio a:link,
{
+
#left .mod_navigation .portfolio a:visited
    background:url(tl_files/menue/menue.gif) no-repeat -300px 0;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -300px 0;
+
}
#left .mod_navigation .portfolio a:hover,
+
 
#left .mod_navigation .portfolio a:focus,
+
#left .mod_navigation .portfolio a:hover,
#left .mod_navigation .portfolio a:active,
+
#left .mod_navigation .portfolio a:focus,
#left .mod_navigation .portfolio span
+
#left .mod_navigation .portfolio a:active,
{
+
#left .mod_navigation .portfolio span
    background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
+
}
#left .mod_navigation .kontakt a,
+
 
#left .mod_navigation .kontakt a:link,
+
#left .mod_navigation .kontakt a,
#left .mod_navigation .kontakt a:visited
+
#left .mod_navigation .kontakt a:link,
{
+
#left .mod_navigation .kontakt a:visited
    background:url(tl_files/menue/menue.gif) no-repeat -450px 0;
+
{
}
+
  background:url(tl_files/menue/menue.gif) no-repeat -450px 0;
+
}
#left .mod_navigation .kontakt a:hover,
+
#left .mod_navigation .kontakt a:focus,
+
#left .mod_navigation .kontakt a:active,
+
#left .mod_navigation .kontakt span
+
{
+
    background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
+
}
+
+
  
 +
#left .mod_navigation .kontakt a:hover,
 +
#left .mod_navigation .kontakt a:focus,
 +
#left .mod_navigation .kontakt a:active,
 +
#left .mod_navigation .kontakt span
 +
{
 +
  background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
 +
}
 +
</source>
 
----
 
----
 
--[[Benutzer:Planepix|Planepix]] 00:40, 23. Jun. 2010 (UTC)
 
--[[Benutzer:Planepix|Planepix]] 00:40, 23. Jun. 2010 (UTC)

Aktuelle Version vom 3. Oktober 2010, 16:30 Uhr


betrifft
TYPOlight Version ab 2.6
Contao Version ab 2.9


Navigation mit Grafiken (Hintergrundbildern) - auch als Sprite-Navigation bekannt.

Vorarbeiten:

Alle Bilder, die für die Navigation benötigt werden - also alle Menüpunkte inklusive dem Hover-Zustand - müssen in einem Bildbearbeitungsprogramm erstellt werden. Alle Menüpunktgrafiken sollten die gleiche Größe besitzen - ebenso ist pixelgenaues Arbeiten wichtig. Sinnvoll ist auch, die Bezeichnung der Menüpunktgrafiken gleich dem Menüpunkt zu benennen.

Beispiel: Startseite-> "startseite.gif".

Für die Navigation mit 2 Zuständen wird eine sogenannte "Spritegrafik" eingesetzt. Hier werden die beiden Menüzustände innerhalb einer Grafik erstellt. Wird nun der Navigationspunkt mit der Maus berührt (mouseover / rollover) verschiebt man mit CSS nur die Koordinaten der Grafik, um den geänderten Menüpunktzustand sichtbar zu machen.

Vorteil, es muss nur eine Grafik pro Menüpunkt geladen werden und der "rollover"-Zustand steht sofort zur Verfügung. Zudem verhindert diese Methode das "Flackern" beim Rollover durch das Verzögern des Nachladens der Grafiken, wenn für den Normalzustand und den Rolloverzustand einzelne Grafiken geladen werden. Am einfachsten erstellt man die Grafiken nach dem immer gleichen Prinzip; d.h. die Grafiken für die unterschiedlichen Menüpunktzustände werden entweder neben- oder untereinander angeordnet.

Die Grafik für den Menüpunkt "Startseite" sieht nun so aus:

Startseite.gif

Die Grafik ist 150 Pixel breit und 60 Pixel hoch (30 + 30 Pixel = Normal- plus Hoverzustand) Erster Schritt in TYPOlight:

In der Seitenstruktur vergibt man für jeden Eintrag die CSS-Klasse entsprechend der Menübezeichnung. Somit kann später jedem Menüpunkt eine eigene Grafik zugewiesen werden.

Übersicht Seitenstruktur

Seitenstruktur-uebersicht.gif


Definition der CSS-Klasse "startseite"

Seitenstruktur-seite.gif


Für alle Seiten innerhalb der Seitenstruktur werden die entsprechenden CSS-Klassen eingesetzt.

CSS-Definition für das Menü in der linken Spalte:

#left .mod_navigation ul
{
  margin:0;
  padding:0;
  list-style-type:none;
}
 
#left .mod_navigation li
{
  margin:0;
  padding:0;
}

CSS-Definitionen für den Menüpunkt "Startseite":

#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:link,
#left .mod_navigation .startseite a:visited
{
  height:30px;
  display:block;
  text-indent:-3000px;
  background:url(tl_files/menue/startseite.gif) no-repeat top left;
}
 
#left .mod_navigation .startseite a:hover
{
  background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation li.startseite.active
{
  height:30px;
  text-indent:-3000px;
  background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
}

Für jeden Link wird die Höhe des Elements (hier im Beispiel: 30px) definiert. Mit der Eigenschaft "text-indent:-3000px;" wird der normale Textlink 3000 Pixel nach links ausserhalb des Browserfensters verschoben und somit optisch unsichtbar. Für den Normalzustand des Menüpunktes sitzt die Hintergrundgrafik auf den Koordinaten 0 0 (oder left top). Für den Hover- und Aktivzustand wird die Hintergrundgrafik um 30 Pixel nach oben (-30px) verschoben, da die Grafik so angelegt wurde, dass der aktive Teil unter dem des normalen Zustandes angeordnet ist.

Darstellung im Browser:

Menue im browser.gif

Vollständige CSS-Definitionen für die 4 Menüpunkte:

/* Definition Menue */
 
#left .mod_navigation
{
   width:150px;
}
 
#left .mod_navigation ul
{
   margin:0;
   padding:0;
   list-style-type:none;
}
 
#left .mod_navigation li
{
   margin:0;
   padding:0;
}
 
/* Definition Startseite */
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:link,
#left .mod_navigation .startseite a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/startseite.gif) no-repeat top left;
}
 
#left .mod_navigation .startseite a:hover
{
   background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation li.startseite.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/startseite.gif) no-repeat 0 -30px;
}
 
/* Definition Referenzen */
#left .mod_navigation .referenzen a,
#left .mod_navigation .referenzen a:link,
#left .mod_navigation .referenzen a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/referenzen.gif) no-repeat top left;
}
 
#left .mod_navigation .referenzen a:hover
{
   background:url(tl_files/menue/referenzen.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation li.referenzen.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/referenzen.gif) no-repeat 0 -30px;
}
 
/* Definition Portfolio */
#left .mod_navigation .portfolio a,
#left .mod_navigation .portfolio a:link,
#left .mod_navigation .portfolio a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/portfolio.gif) no-repeat top left;
}
 
#left .mod_navigation .portfolio a:hover
{
   background:url(tl_files/menue/portfolio.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation li.portfolio.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/portfolio.gif) no-repeat 0 -30px;
}
 
/* Definition Kontakt */
#left .mod_navigation .kontakt a,
#left .mod_navigation .kontakt a:link,
#left .mod_navigation .kontakt a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/kontakt.gif) no-repeat top left;
}
 
#left .mod_navigation .kontakt a:hover
{
   background:url(tl_files/menue/kontakt.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation li.kontakt.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/kontakt.gif) no-repeat 0 -30px;
}

Die Schreibweise lässt sich noch weiter reduzieren / vereinfachen, in dem die CSS-Definitionen wie folgt angepasst werden: Diese vereinfachte / zusammenfassende Schreibweise funktioniert bei Spritegrafiken mit 2 Zuständen und gleichen Größen. Danke für den Tipp Nina :-)

/* Definition Menue */
#left .mod_navigation {
   width:150px;
}
 
#left .mod_navigation ul {
   margin:0;
   padding:0;
   list-style-type:none;
}
 
#left .mod_navigation li {
   margin:0;
   padding:0;
}
 
#left .mod_navigation a,
#left .mod_navigation span {
   height:30px;
   display:block;
   text-indent:-3000px;
   background-repeat: none;
}
 
#left .mod_navigation a:link,
#left .mod_navigation a:visited {
   background-position: top left;
}
 
#left .mod_navigation a:hover,
#left .mod_navigation a:focus,
#left .mod_navigation a:active,
#left .mod_navigation span {
   background-position: 0 -30px;
}
 
/* Definition der einzelnen Bilder */
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite span {
   background-image: url(tl_files/menue/startseite.gif);
}
 
#left .mod_navigation .referenzen a,
#left .mod_navigation .referenzen span {
   background-image: url(tl_files/menue/referenzen.gif);
}
 
#left .mod_navigation .portfolio a,
#left .mod_navigation .portfolio span {
   background-image: url(tl_files/menue/portfolio.gif);
}
 
#left .mod_navigation .kontakt a,
#left .mod_navigation .kontakt span {
   background-image: url(tl_files/menue/kontakt.gif);
}

Sprite-Navigation mit einer Grafik

Menue.gif

Um eine Sprite-Navigation aus einer Grafik für das Menü zu nutzen, wird eine komplette Menügrafik erstellt: Diese sieht dann so aus:

Die Grafik ist nun 600 Pixel breit (4 x 150px) und 60 Pixel hoch (30 + 30 Pixel = Normal- plus Hoverzustand). Die jeweiligen Zustände des Menüs werden erneut durch das Verschieben der Koordinaten erreicht. Hierzu wird dann nur noch eine Grafik geladen anstatt wie im oberen Beispiel 4 Grafiken.

Erklärung Koordinaten der Grafik:

Menue grafik erklaerung.gif


Beispiel Menüpunkt Referenzen: (normaler Zustand): -150px (nach links) 0px (nach oben) (Hover- / Aktiv-Zustand): -150px (nach links) -30px (nach oben) Die dafür veränderten CSS-Definitionen:

#left .mod_navigation
{
   width:150px;
}
 
#left .mod_navigation ul
{
   margin:0;
   padding:0;
   list-style-type:none;
}
 
#left .mod_navigation li
{
   margin:0;
   padding:0;
}
 
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:link,
#left .mod_navigation .startseite a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat top left;
}
 
#left .mod_navigation .startseite a:hover
{
   background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation li.startseite.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation .referenzen a,
#left .mod_navigation .referenzen a:link,
#left .mod_navigation .referenzen a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat -150px 0;
}
 
#left .mod_navigation .referenzen a:hover
{
   background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
}
 
#left .mod_navigation li.referenzen.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
}
 
#left .mod_navigation .portfolio a,
#left .mod_navigation .portfolio a:link,
#left .mod_navigation .portfolio a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat -300px 0;
}
 
#left .mod_navigation .portfolio a:hover
{
   background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
}
 
#left .mod_navigation li.portfolio.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
}
 
#left .mod_navigation .kontakt a,
#left .mod_navigation .kontakt a:link,
#left .mod_navigation .kontakt a:visited
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat -450px 0;
}
 
#left .mod_navigation .kontakt a:hover
{
   background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
}
 
#left .mod_navigation li.kontakt.active
{
   height:30px;
   text-indent:-3000px;
   background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
}

Verkürzte Schreibweise dafür:

/* Definition Menue */
#left .mod_navigation
{
   width:150px;
}
 
#left .mod_navigation ul
{
   margin:0;
   padding:0;
   list-style-type:none;
}
 
#left .mod_navigation li
{
   margin:0;
   padding:0;
}
 
#left .mod_navigation a,
#left .mod_navigation span
{
   height:30px;
   display:block;
   text-indent:-3000px;
   background-repeat: none;
}
 
#left .mod_navigation .startseite a,
#left .mod_navigation .startseite a:link,
#left .mod_navigation .startseite a:visited
{
   background:url(tl_files/menue/menue.gif) no-repeat top left;
}
 
#left .mod_navigation .startseite a:hover,
#left .mod_navigation .startseite a:focus,
#left .mod_navigation .startseite a:active,
#left .mod_navigation .startseite span
{
   background:url(tl_files/menue/menue.gif) no-repeat 0 -30px;
}
 
#left .mod_navigation .referenzen a,
#left .mod_navigation .referenzen a:link,
#left .mod_navigation .referenzen a:visited
{
   background:url(tl_files/menue/menue.gif) no-repeat -150px 0;
}
 
#left .mod_navigation .referenzen a:hover,
#left .mod_navigation .referenzen a:focus,
#left .mod_navigation .referenzen a:active,
#left .mod_navigation .referenzen span
{
   background:url(tl_files/menue/menue.gif) no-repeat -150px -30px;
}
 
#left .mod_navigation .portfolio a,
#left .mod_navigation .portfolio a:link,
#left .mod_navigation .portfolio a:visited
{
   background:url(tl_files/menue/menue.gif) no-repeat -300px 0;
}
 
#left .mod_navigation .portfolio a:hover,
#left .mod_navigation .portfolio a:focus,
#left .mod_navigation .portfolio a:active,
#left .mod_navigation .portfolio span
{
   background:url(tl_files/menue/menue.gif) no-repeat -300px -30px;
}
 
#left .mod_navigation .kontakt a,
#left .mod_navigation .kontakt a:link,
#left .mod_navigation .kontakt a:visited
{
   background:url(tl_files/menue/menue.gif) no-repeat -450px 0;
}
 
#left .mod_navigation .kontakt a:hover,
#left .mod_navigation .kontakt a:focus,
#left .mod_navigation .kontakt a:active,
#left .mod_navigation .kontakt span
{
   background:url(tl_files/menue/menue.gif) no-repeat -450px -30px;
}

--Planepix 00:40, 23. Jun. 2010 (UTC)

Ansichten
Meine Werkzeuge

Contao Community Documentation

Ich habe es mir mal grob ausgerechnet: Bei jeder Extension von mir verbrauche ich im Durchschnitt 6 Pizzen. Wenn Dir meine Extensions gefallen, sende mir bitte mehr Pizzen. Die Adresse gibt es auf Anfrage!

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge