| Autor | Zpráva | ||
|---|---|---|---|
| hoverM Profil * |
#1 · Zasláno: 27. 1. 2011, 19:44:05
Ahoj. Snažím se čistě jen v CSS udělat víceúrovňové vysouvací menu. Má to vypadat takto: 1 úroveň položky vedle sebe, po najetí na položku se pod ní objeví pod sebou podnabídka, po najetí na položku v podnabídce se vedle ní objeví další atd. atd. Našel jsem kvanta různých příkladů na menu, které buď nefungovaly nebo byly absolutně pozicovány či s fixní šířkou/výškou nebo jen 2 úrovňové nebo byly částečně v javascriptu, což já nechci. Proto jsem začal bastlit menu vlastní, bohužel jaksi nefunguje a nevím jak dál.
HTML: <div class="topmenu"> <ul> <li> <div>koren1</div> <ul> <li> <a href="#"><div>vetev1</div></a> <ul> <li> <a href="#"><div>vetev11a</div></a> </li> <li> <a href="#"><div>vetev11b</div></a> <ul> <li> <a href="#"><div>vetev111a</div></a> </li> <li> <a href="#"><div>vetev111b</div></a> </li> </ul> </li> </ul> </li> <li> <a href="#"><div>vetevb</div></a> </li> </ul> </li> <li> <a href="#"><div>koren2</div></a> </li> <li> <a href="#"><div>koren3</div></a> </li> </ul> </div> CSS:
.topmenu ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.topmenu > ul > li {
display: block;
margin: 0;
padding: 0;
float: left;
}
.topmenu > ul > li div {
display: block;
margin: 0;
padding: 0;
border: 1px solid black;
background: yellow;
line-height: 25px;
}
.topmenu > ul ul {
display: none;
}
.topmenu > ul > li:hover > ul {
display: block;
}
.topmenu > ul ul > li {
display: block;
margin: 0;
padding: 0;
}
.topmenu > ul ul > li div {
display: block;
margin: 0;
padding: 0;
border: 1px solid black;
background: whitesmoke;
line-height: 25px;
float: left;
}
.topmenu > ul ul > li:hover > ul {
display: block;
float: left;
}
.topmenu > ul ul > li:hover > ul > li {
display: block;
margin: 0;
padding: 0;
}
.topmenu > ul ul > li:hover > ul > li div {
display: block;
margin: 0;
padding: 0;
border: 1px solid black;
background: whitesmoke;
line-height: 25px;
}
Mohli byste mě prosím navést správným směrem? Vlastně řeším jeden hlavní problém: jak zobrazit podnabídku vedle položky z nadřazené podnabídky tak aby byla vedle ní a přitom se neroztáhla položka z nabídky 1. úrovně. |
||
| xmark Profil |
#2 · Zasláno: 27. 1. 2011, 19:47:09
|
||
| hoverM Profil * |
#3 · Zasláno: 27. 1. 2011, 19:55:53
To bylo první na co jsem koukal. Pomocí toho jsem tak nějak začal "bastlit". Tam jsou pevné šířky a navíc je jen 3 úrovňové. Já potřebuju N-úrovňové.
|
||
| Chamurappi Profil |
#4 · Zasláno: 27. 1. 2011, 19:59:06
Reaguji na hoverMa:
Přečti si, proč dávat odkaz na živou ukázku. Mimochodem, ty znáš nějakého uživatele, který by rád obsluhoval tříúrovňové hover menu? Podobná bludiště pro myš nejsou moc oblíbená. |
||
| hoverM Profil * |
#5 · Zasláno: 27. 1. 2011, 20:28:16
Vytvářím něco kde bude potřeba i víceúrovňové menu, protože velice ulehčí práci. Menu vytvářím tak, aby se rozevíralo po najetí na blok div, tzn. není potřeba odkaz. Pokud tam takový odkaz je a ještě se menu rozevírá dává uživateli vybrat třeba:
vybrané záznamy ---> editovat (obecná editace) ------> nastavit hodnotuX + 1 ------> ..... HTML kód si generuju pomocí php, takže to je také snadné. Horší je to s tím CSS. Odkaz na ukázku jsem dát nemohu, protože to mám jen lokálně na notebooku. Nicméně tady je to složené dohromady, takže stačí uložit do souboru .html s otevřít v prohlížeči:
<html>
<head>
<title>ukazka</title>
<style type="text/css">
.topmenu ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.topmenu > ul > li {
display: block;
margin: 0;
padding: 0;
float: left;
}
.topmenu > ul > li div {
display: block;
margin: 0;
padding: 0;
border: 1px solid black;
background: yellow;
line-height: 25px;
}
.topmenu > ul ul {
display: none;
}
.topmenu > ul > li:hover > ul {
display: block;
}
.topmenu > ul ul > li {
display: block;
margin: 0;
padding: 0;
}
.topmenu > ul ul > li div {
display: block;
margin: 0;
padding: 0;
border: 1px solid black;
background: whitesmoke;
line-height: 25px;
float: left;
}
.topmenu > ul ul > li:hover > ul {
display: block;
float: left;
}
.topmenu > ul ul > li:hover > ul > li {
display: block;
margin: 0;
padding: 0;
}
.topmenu > ul ul > li:hover > ul > li div {
display: block;
margin: 0;
padding: 0;
border: 1px solid black;
background: whitesmoke;
line-height: 25px;
}
</style>
</head>
<body>
<div class="topmenu">
<ul>
<li>
<div>koren1</div>
<ul>
<li>
<a href="#"><div>vetev1</div></a>
<ul>
<li>
<a href="#"><div>vetev11a</div></a>
</li>
<li>
<a href="#"><div>vetev11b</div></a>
<ul>
<li>
<a href="#"><div>vetev111a</div></a>
</li>
<li>
<a href="#"><div>vetev111b</div></a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#"><div>vetevb</div></a>
</li>
</ul>
</li>
<li>
<a href="#"><div>koren2</div></a>
</li>
<li>
<a href="#"><div>koren3</div></a>
</li>
</ul>
</div>
</body>
</html>
|
||
| Chamurappi Profil |
#6 · Zasláno: 27. 1. 2011, 20:31:24 · Upravil/a: Chamurappi
Reaguji na hoverMa:
„Odkaz na ukázku jsem dát nemohu, protože to mám jen lokálně na notebooku.“ Přečti si i zbytek toho povídání, na které jsem tě odkázal minule. „Nicméně tady je to složené dohromady, takže stačí uložit do souboru .html s otevřít v prohlížeči“ Netvrdím, že to nikdo neudělá, ale úplně zbytečně si snižuješ šanci na odpověď. |
||
| hoverM Profil * |
#7 · Zasláno: 27. 1. 2011, 20:39:09
Ok, tady je odkaz: http://jsfiddle.net/vT3TZ/1/
|
||
|
Časová prodleva: 15 let
|
|||
0