2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
321
321
EMPFEHLEN
-
Hallo!
Wie kann ich ein Menü mit Submenü-Elementen erstellen?
Ich habe bereits folgende ungeordnete Liste:
Nun sollten die Submenüs dazukommen:HTML-Code:<ul> <li><a href="#">Menüpunkt 1</a></li> <li><a href="#">Menüpunkt 2</a></li> <li><a href="#">Menüpunkt 3</a></li> <li><a href="#">Menüpunkt 4</a></li> <li><a href="#">Menüpunkt 5</a></li> </ul>
Wenn der User auf ein Menülevel 1 klickt, sollen alle Unterpunkte von Level 1 eingeblendet werden (1.1, 1.2, 1.3). Wie kann ich so etwas realisieren? CSS/JavaScript? Es soll auch für IE7 funktionieren.HTML-Code:<ul> <li><a href="#">Menpunkt 1 Level 1</a> <ul> <li><a href="#">Menüpunkt 1.1</a></li> <li><a href="#">Menüpunkt 1.2</a></li> <li><a href="#">Menüpunkt 1.3</a></li> </ul> </li> <li><a href="#">Menüpunkt 2</a> <ul> <li><a href="#">Menüpunkt 2.1</a></li> <li><a href="#">Menüpunkt 2.2</a></li> <li><a href="#">Menüpunkt 2.3</a></li> </ul> </li> <li><a href="#">Menüpunkt 3</a></li> <li><a href="#">Menüpunkt 4</a></li> <li><a href="#">Menüpunkt 5</a></li> </ul>
Vielen Dank im Voraus.
-
12.08.11 19:35 #2
Mit CSS kann man leider keine Klicks gesondert behandeln. Aber viele nutzen auch den :hover-Effekt.
Mit JavaScript geht das auf jeden Fall:
Der JS-Code:HTML-Code:<!-- onclick-Event hinzufügen! --> <li><a href="#" onclick="menuClicked(this)">Menpunkt 1 Level 1</a>
Code javascript:1 2 3 4 5 6 7 8 9 10
function menuClicked(obj) { var ulList = obj.parentNode.getElementsByTagName("ul")[0]; if (ulList.style.display=='block') ulList.style.display = 'none'; else ulList.style.display = 'block'; }
Und um alle im Ausgangszustand zu verstecken, der CSS-Code:
Code css:1 2 3 4
#menu li ul { display: none; }
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Klicks gehen theoretisch auch im CSS, mittels :focus. Ich nutze aber auch eher die :hover-Möglichkeiten, da es für den Anwender eher intuitiv ist.
-
Ohne JS, dafür in CSS mit den Pseudoklassen :active und :focus mittlerweile auch browserübergreifend

- http://www.cssplay.co.uk/menus/csspl...-droplist.html
- http://www.cssplay.co.uk/menus/cssplay-click-slide.html
- http://www.cssplay.co.uk/menus/csspl...ck-flyout.html
- http://www.cssplay.co.uk/menus/csspl...-dropline.html
- http://www.cssplay.co.uk/menus/csspl...-drop-fly.html
Deine Bedingung wird von allen fünf Menüvarianten erfüllt
Geändert von spicelab (13.08.11 um 09:53 Uhr) Grund: Tipp-Ex
-
15.08.11 20:42 #5mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
-
Hallo,
ich würde für eine CSS-Lösung die target-Pseudoklasse verwenden. Dafür müsstest du den UL-Elementen der Submenüs eine ID geben und so ankerfähig machen. Die Links in den Hauptmenüpunkten zielen dann auf diese "following-sibling"-Elemente:
Die zugehörige CSS-Regel würde dann so aussehen:HTML-Code:<ul id="menu"> <li><a href="#mp1">Menpunkt 1 Level 1</a> <ul id="mp1"> <li><a href="#">Menüpunkt 1.1</a></li> <li><a href="#">Menüpunkt 1.2</a></li> <li><a href="#">Menüpunkt 1.3</a></li> </ul> </li> <li><a href="#mp2">Menüpunkt 2</a> <ul id="mp2"> <li><a href="#">Menüpunkt 2.1</a></li> <li><a href="#">Menüpunkt 2.2</a></li> <li><a href="#">Menüpunkt 2.3</a></li> </ul> </li> <li><a href="#">Menüpunkt 3</a></li> <li><a href="#">Menüpunkt 4</a></li> <li><a href="#">Menüpunkt 5</a></li> </ul>
Leider wird das vom Internet-Explorer bis einschließlich v8 nicht unterstützt, so dass dafür so ähnlich wie im Tutorial CSS3-Accordion (fast) ohne Javascript mit Javascript oder jQuery innerhalb von "Conditional Comments" nachgeholfen werden kann.Code css:1
ul#menu li a + ul[id]:not(:target) { display: none; }
-
Danke für die vielen Infos! Ich habe mal das hier nachgebaut.
Was mir dabei aufgefallen ist:
-nach Klick auf ein Menü-Element klappt das Menü zusammen
-Problem bei der Höhe zwischen IE9 und FF5 (siehe Anhang):
Das letzte Element hat zu wenig Höhe. Ich kann die Werte so einstellen, dass es im IE & Opera geht oder nur für den FF geht.
HTML-Code:<div id="SubMenuOuter"> <ul id="SubMenu"> <li class="SubMenu1"> <a href="#" class="SubMenu1" tabindex="1">Menü</a> <ul class="sub3"> <li class="SubMenu2"><a href="#" class="SubMenu2">text1</a></li> <li class="SubMenu2"><a href="#" class="SubMenu2">text2</a></li> <li class="SubMenu2"><a href="#" class="SubMenu2">text3</a></li> </ul> </li> </ul> </div>
Code css:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
/* ================================================================ This copyright notice must be untouched at all times. The original version of this stylesheet and the associated (x)html is available at [url]http://www.cssplay.co.uk/SubMenus/cssplay-click-slide.html[/url] Copyright (c) 2005-2011 Stu Nicholls. All rights reserved. This stylesheet and the associated (x)html may be modified in any way to fit your requirements. =================================================================== */ /* this is a CSS answer to fix the hover/focus '~' and hover/focus '+' problem in safari and chrome */ /* tabindex="1" in the link code to fix the 'focus persist' problem in safari and chrome */ html {-webkit-animation: safariSelectorFix infinite 1s;} @-webkit-keyframes safariSelectorFix { 0% {zoom:1;} 100% {zoom:1;} } #SubMenuOuter { position:absolute; top:390px; margin-left:30px; height:300px; width:200px; z-index:10; } /* for Internet Explorer to force a SubMenu refresh after :active + ul */ #SubMenu li a, body {behavior:url(trigger.htc)} #SubMenu { padding: 0 0 10px 10px; list-style:none; /*position:absolute; top:390px; margin-left:30px; width:180px;*/ background-color:#fcb344; /* Round corners not for IE8 and below*/ -webkit-border-top-left-radius:15px; -khtml-border-top-left-radius:15px; -moz-border-radius-topleft:15px; border-top-left-radius:15px; -webkit-border-top-right-radius:15px; -khtml-border-top-right-radius:15px; -moz-border-radius-topright:15px; border-top-right-radius:15px; -webkit-border-bottom-left-radius:15px; -khtml-border-bottom-left-radius:15px; -moz-border-radius-bottomleft:15px; border-bottom-left-radius:15px; -webkit-border-bottom-right-radius:15px; -khtml-border-bottom-right-radius:15px; -moz-border-radius-bottomright:15px; border-bottom-right-radius:15px; } #SubMenu li a.SubMenu1 { display:block; text-decoration:none; color:#404041; padding-left:4px; line-height:26px; } #SubMenu ul li a.SubMenu2 { /*display:block;*/ text-decoration:none; color:#404041; line-height:14px; } #SubMenu ul { margin:0; padding:0; height:0; overflow:hidden; list-style:none; } #SubMenu li.SubMenu1 { display:block; /* for IE7 to remove the vertical gap between list items */ *float:left; list-style:none; /*padding:5px 0 5px 0;*/ border-bottom-style:solid; border-color:#fdbf63; width:187px; background-image:url(../images/SubMenu1Button.png); /*background-position:center;*/ background-repeat:no-repeat; } #SubMenu li.SubMenu1:hover { display:block; background-image:url(../images/SubMenu1ButtonHover.png); /*background-position:center;*/ } #SubMenu li.SubMenu2 { display:block; /* for IE7 to remove the vertical gap between list items */ *float:left; list-style:none; padding:5px 0 5px 21px; border-bottom-style:solid; border-color:#fdbf63; width:167px; background-image:url(../images/SubMenu2Button.png); background-position:center; background-repeat:no-repeat; } #SubMenu li.SubMenu2:hover { display:block; background-image:url(../images/SubMenu2ButtonHover.png); } #SubMenu li.last { border:none; } /* zu testzwecken */ /*#SubMenu ul.sub3 {height:84px;}*/ #SubMenu li a:active + ul, #SubMenu li a:focus + ul { /*padding:5px 0 0 0;*/ background-image:url(../images/SubMenu2Button.png); background-position:center; background-repeat:no-repeat; } #SubMenu li a:active + ul.sub3, #SubMenu li a:focus + ul.sub3 { height:78px; } #SubMenu li a:active + ul.sub4, #SubMenu li a:focus + ul.sub4 { height:110px; } #SubMenu li a:active + ul.sub5, #SubMenu li a:focus + ul.sub5 { height:140px; } /*#SubMenu li ul {padding:10px 0 10px 0;}*/ /* #SubMenu li ul:hover {padding:0 0 10px 0;} #SubMenu li ul.sub3:hover {height:70px;} #SubMenu li ul.sub4:hover {height:110px;} #SubMenu li ul.sub5:hover {height:140px;} */
Bin für Tips dankbar!
Edit:
Hab bisschen beim CSS rumgespielt und es nun sein lassen. Thread geschlossen.Geändert von anve (07.09.11 um 22:49 Uhr)
Ähnliche Themen
-
JQuery - Untermenüpunkte sliden lassen
Von Jan-Frederik Stieler im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 29.11.10, 22:59 -
Untermenüpunkte bei Bedarf ausblenden
Von LuvShining im Forum CSSAntworten: 1Letzter Beitrag: 22.03.05, 06:24 -
Bei Klick: Bildwechsel im JS-Menü
Von bocadillochef im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 02.01.05, 18:50 -
Dropdown Menü zeigt falsches Menü
Von Blattspinat im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 05.11.04, 09:42 -
Menü auf Klick ausblenden
Von ovakill im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 31.08.04, 15:54





Zitieren



Login





