Dropdown Menü in Typo3 nur mit hilfe von CSS ohne JAVAScript!


Hallo,

heute hatte ich mal wieder eine Aufgabe in Typo3 zu bewältigen. Diesmal sollte es ein Dropdown Menü sein das nur in CSS und Text gecodet ist. Allein schon um dadurch Multi-Browserfähig und Plattform unabhängig zu sein, außerdem ist dies auch SEO Technisch für Suchmaschinen besser.

Mit hilfe dieses Tutorials hab ich es dann auch geschafft. Natürlich wurde die ganze Geschichte auch von mir angepasst. Diese Anpassung stelle ich euch natürlich auch hier zur verfügung.

Typoscript Code für das Setup:

KOPF_MENUE = HMENU
KOPF_MENUE {

excludeUidList = 3,4

special = directory
# Hier die Start-ID angeben
special.value = 1

wrap = <div> | </div>

# Hauptmenue
1 = TMENU
1 {
wrap = <nobr><ul> | </ul></nobr>
expAll = 1
NO.ATagTitle.field = subtitle//title
NO.wrapItemAndSub = <li> | </li>
NO.stdWrap.prepend = COA
NO.stdWrap.prepend.10.wrap = ~&nbsp; |
IFSUB = 1
IFSUB {
wrapItemAndSub = <li> | </li>
allWrap = | <!–<![endif]–>
linkWrap = |<!–[if IE 7]><!–>
ATagBeforeWrap = 1
}
ACT < .NO
ACT = 1
ACT.ATagParams =
ACTIFSUB < .IFSUB
ACTIFSUB.ATagParams =
}
2 = TMENU
2 {
wrap = <!–[if lte IE 6]><table><tr><td><![endif]–><ul> | </ul><!–[if lte IE 6]></td></tr></table></a><![endif]–>
expAll = 1
NO.ATagTitle.field = subtitle//title
NO.wrapItemAndSub = <li> | </li>
IFSUB = 1
IFSUB {
wrapItemAndSub = <li> | </li>
allWrap = | <!–<![endif]–>
linkWrap = |<!–[if IE 7]><!–>
ATagBeforeWrap = 1
ATagParams =
}
}

CSS Code:

.menu {
width:750px;
font-size:0.85em;
position:relative;
z-index:100;
}
/* remove all the bullets, borders and padding from the default list styling */
.menu ul {
padding:0;
margin:0;
list-style-type:none;
}
.menu ul ul {
}
/* float the list to make it horizontal and a relative positon so that you can control the dropdown menu positon */
.menu li {
float:left;
position:relative;
}
/* style the links for the top level */
.menu a,  .menu a:visited {
display:block;
font-size:11px;
text-decoration:none;
color:#fff;
height:30px;
border:1px solid #fff;
border-width:0 1px 0 0;
padding-left:6px;
padding-right:6px;
line-height:29px;
}
/* a hack so that IE5.5 faulty box model is corrected */
* html  .menu a, * html  .menu a:visited {
}

/* style the second level background */
.menu ul ul a.drop,  .menu ul ul a.drop:visited {
background:#999999 url(../../graphics/drop.gif) bottom right no-repeat;
border:none;
}
/* style the second level hover */
.menu ul ul a.drop:hover{
background:#999999 url(../../graphics/drop.gif) bottom right no-repeat;
}
.menu ul ul :hover > a.drop {
background:#999999 url(../../graphics/drop.gif) bottom right no-repeat;
}
/* style the third level background */
.menu ul ul ul a,  .menu ul ul ul a:visited {
background:#999999;
}
/* style the third level hover */
.menu ul ul ul a:hover {
background:#999999;
}

/* hide the sub levels and give them a positon absolute so that they take up no room */
.menu ul ul {
visibility:hidden;
position:absolute;
border:none;
height:0;
top:30px;
left:0;
}
/* another hack for IE5.5 */
* html  .menu ul ul {
top:30px;
border:none;
t\op:31px;
}

/* position the third level flyout menu */
.menu ul ul ul{
left:150px;
border:none;
top:0;
}
/* position the third level flyout menu for a left flyout */
.menu ul ul ul.left {
left:-150px;
}

/* style the table so that it takes no ppart in the layout – required for IE to work */
.menu table {position:absolute; top:0; left:0;}

/* style the second level links */
.menu ul ul a,  .menu ul ul a:visited {
background:#999999;
height:auto;
line-height:1em;
border:none;
width:100px;
padding:5px 10px;
/* yet another hack for IE5.5 */
}
* html  .menu ul ul a{
}

/* style the top level hover */
.menu a:hover,  .menu ul ul a:hover{
color:#000000 !important;
background:#999999;
}
.menu :hover > a,  .menu ul ul :hover > a {
color:#00000 !important;
background:#999999;
}

/* make the second level visible when hover on first level list OR link */
.menu ul li:hover ul,
.menu ul a:hover ul{
visibility:visible;
border:none;
}
/* keep the third level hidden when you hover on first level list OR link */
.menu ul :hover ul ul{
visibility:hidden;
border:none;
}

/* make the third level visible when you hover over second level list OR link */
.menu ul :hover ul :hover ul{
visibility:visible;
}

Unter dieser Adresse könnt ihr das Ergebniss sehen. Übrigens: Auch die Javagallerie oben ist auf meinem Mist gewachsen ^^. Ich werde dazu auch hier noch ein Tutorial veröffentlichen. Viel Spaß damit.

MFG

Sammy

2 Comments

  • Edgar (#)
    November 27th, 2012

    Toll wenn Links funktionieren.

  • Sammy Baghdadi (#)
    November 27th, 2012

    Man beachte bitte das Alter des Blogposting. Damals funktionierte er. Die Firma ist aber mittlerweile insolvent.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *