magnify

Grafisches Menü ohne JavaScript

Armin Bartsch, Mittwoch, 11. März 2009

Grafisches Menü das mit CSS funktioniert, keine JavaScript notwendig.

In der Regel wird das Grafische Menü mit dem cObject GMENU gebildet. Diese Menü benötigt für den hover-Effekt JavaScript. Das hier vorgestellte Grafische Menü benötigt kein JavaScript, da die Grafiken als Hintergrund mit Hilfe von CSS eingefügt und mittels hover gewechselt werden.

Da ich hier die  Image Replacement-Techniken zum Einsatzkommen, ist diese Art Suchmaschinenfreundlich und Barrierearm. Lesen die dazu auch typo3.intervation.de/snippets/allgemein/grafische-ueberschrift.html.

Der Notwendige Quelltext sieht so aus:

  1. <div id="grafik_menue_demo">
  2.   <ul>
  3.     <li> <a href="intervation/intervation.html" id="mm_id7">Intervation</a> </li>
  4.     <li> <a href="tutorial.html" id="mm_id15">Tutorial</a> </li>
  5.     <li> <a href="snippets.html" id="mm_id9">Snippets</a> </li>
  6.     <li> <a href="extensionen.html" id="mm_id64">Extensionen</a> </li>
  7.     <li> <a href="nc/forum.html" id="mm_id188">Forum</a> </li>
  8.   </ul>
  9. </div>

TypoScript

Das TypoScript teilt sich in drei Bereiche auf, die Grafik-Deklaration, die Menü-Deklaration und das Einfügen des CSS-Angaben in den header.

Grafik-Deklaration

Es wird die Generierung der Grafik (Größe, Schriftart -farbe und- größe, Grafiken) festgelegt). Der Inhalt wird später in die Menüerstellung kopiert. Benötigt wird der Pfad zur Grafik, da dieser für das CSS background-image benötigt wird.

  1. temp.css_menue10 = IMG_RESOURCE
  2. temp.css_menue10 {
  3.         file = GIFBUILDER
  4.         file {
  5.           #XY = [10.w]+[20.w]+23,[10.h]+10
  6.           XY = 200,25
  7.           backColor = #ffffff
  8.           10 = TEXT
  9.           10 {
  10.             text.field = subtitle//title
  11.             fontSize = 12
  12.             fontFile = fileadmin/yearsupplyoffairycakes.ttf
  13.             offset = 23,20
  14.             fontColor = #000000
  15.             #niceText = 1
  16.           }
  17.         }
  18.       stdWrap.wrap = { background-image: url(|); }
  19. }
  20.  
  21. # Angabe für das hover
  22. temp.css_menue20 < temp.css_menue10
  23. temp.css_menue20 {
  24.         file {
  25.           backColor = #cccccc
  26.         }
  27. }

Menü-Deklaration

Zur Menüerzeugung kommt hier TMENU zum Einsatz, die CSS Angaben werden in einer Variablen (LOAD_REGISTER) gespeichert.

  1. lib.menue_grafik = HMENU
  2. lib.menue_grafik {
  3.   wrap = <div id=grafik_menue_demo>|</div>
  4.   special = directory
  5.   special.value = 5
  6.   1 = TMENU
  7.   1.stdWrap.dataWrap = <ul> | </ul>
  8.   1 {
  9.     expAll = 1
  10.     NO {
  11.       doNotLinkIt = 1
  12.       linkWrap = <li> | </li>
  13.       stdWrap.cObject = COA
  14.       stdWrap.cObject {
  15.         10 = LOAD_REGISTER
  16.         10.css_menue.cObject < temp.css_menue10
  17.         10.css_menue_hover.cObject < temp.css_menue20
  18.         10.css_menue_ges.cObject = TEXT
  19.         10.css_menue_ges.cObject.dataWrap = #mm_id{field:uid} {register:css_menue} #mm_id{field:uid}:hover {register:css_menue_hover} {register:css_menue_ges}
  20.         20 = TEXT
  21.         20 {
  22.           field = subtitle//title
  23.           typolink {
  24.             parameter.field = uid
  25.             ATagParams.cObject = COA
  26.             ATagParams.cObject {
  27.               30 = TEXT
  28.               30.dataWrap = id="mm_id{field:uid}"
  29.             }
  30.           }
  31.         }
  32.       }
  33.     }
  34.   }
  35. }

CSS-Angaben

Zum Schluss müssen noch die CSS-Angaben übergeben werden.

  1. seite.headerData.300 = COA
  2. seite.headerData.300 {
  3.   wrap = <style> | </style>
  4.   10 = TEXT
  5.   10.value (
  6.                #grafik_menue_demo ul, #grafik_menue_demo li {
  7.                         margin: 0px;
  8.                         padding: 0px;
  9.                         list-style-type : none;
  10.                        
  11.                 }
  12.                  #grafik_menue_demo a {
  13.                      text-indent: -999em;
  14.                      color: #FFFFFF;
  15.                      width:200px;
  16.                      height:25px;
  17.                      display:block;
  18.                  }
  19.                
  20.   )
  21.   20 = TEXT
  22.   20.dataWrap = {register:css_menue_ges}
  23. }
magnify

Kommentare

Ins Gästebuch eintragen
Kein Kommentar vorhanden

MERKLISTE

Login

Anmelden

Sponsored by:

ideenwerft webhosting

Wunschzettel