Autor Zpráva
Martos
Profil *
Na http://kep.mujhost.cz/Test.htm mám menu. Po kliknutí se zobrazí podmenu, po dalším kliknutí se podmenu skryje. Chci ale udělat 2 věci:
1/ Aby se podmenu zobrazilo po najetí/odjetí myši
2/ Aby se text pod menu neodsunul dolů. Podmenu ten text překryje

Mám tento kód:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Test</title>
<style type="text/css">
.klik {cursor: pointer; cursor: hand}
.skryvany {	DISPLAY: none}
</style>
</head>

<body>
<SCRIPT>
	function zobrazSkryj(idecko){
		el=document.getElementById(idecko).style; 
		el.display=(el.display == 'block')?'none':'block';
	}
</SCRIPT>

<table border="0" width="300" cellspacing="0" cellpadding="0">
	<tr>
		<td><span class="klik" onclick="zobrazSkryj('oddil-01')">Menu 1</span></td>
		<td><span class="klik" onclick="zobrazSkryj('oddil-02')">Menu 2</span></td>
		<td><span class="klik" onclick="zobrazSkryj('oddil-03')">Menu 3</span></td>
	</tr>
</table>

<div style="position: relative; top: 4px; left: 0" class="skryvany" id="oddil-01">
	<span><a href="/Podmenu11">Podmenu 11</a></span><br>
	<span><a href="/Podmenu12">Podmenu 12</a></span><br>
	<span><a href="/Podmenu13">Podmenu 13</a></span><br>
	<span><a href="/Podmenu14">Podmenu 14</a></span>
</div>
<div style="position: relative; top: 4px; left: 100" class="skryvany" id="oddil-02">
	<span><a href="/Podmenu21">Podmenu 21</a></span><br>
	<span><a href="/Podmenu22">Podmenu 22</a></span><br>
	<span><a href="/Podmenu23">Podmenu 23</a></span><br>
	<span><a href="/Podmenu24">Podmenu 24</a></span>
</div>
<div style="position: relative; top: 4px; left: 200" class="skryvany" id="oddil-03">
	<span><a href="/Podmenu31">Podmenu 31</a></span><br>
	<span><a href="/Podmenu32">Podmenu 32</a></span><br>
	<span><a href="/Podmenu33">Podmenu 33</a></span><br>
	<span><a href="/Podmenu34">Podmenu 34</a></span>
</div>

<p>Text, text, text, text, text, text, text, text, </p>

</body>
</html>
Sir Tom
Profil
Martos:
Ad 1.:
Změníš pouze typ události. Místo
onclick="zobrazSkryj('oddil-01')"
napiš
onmouseout="zobrazSkryj('oddil-01')" onmouseover="zobrazSkryj('oddil-01')"
(Hodnoty v parametrech budeš muset pro každou položku změnit.)

Ad 2.:
Aby nově zobrazované podmenu překrývalo text musí mít absolutní pozicování. Místo relative tedy do všech divů s podmenu napiš absolute. (Budeš muset přepsat i hodnoty top a left, ale to uvidíš, až to vyzkoušíš.

Jestli necháš kód takto, tak hodnoty top a left se budou počítat od levého horního okraje prohlížeče. Budeš-li chtít s pozicí celého menu dále manipulovat, bylo by dobré, kdybys jej celý uzavřel do divu s position: relative; (resp. absolute - záleží na situaci). V tomto případě se hodnoty top a left u podmenu budou počítat od levého horního okraje divu s celým menu.
Martos
Profil *
Sir Tom:
Tak jsem to tam zapracoval. Většina je ok, jen když chci myší přejet na to podmenu a opustím myší hlavní název menu, tak se podmenu skryje a není šance na podmenu přejít. Aktuální verzi jsem nahrál na http://kep.mujhost.cz/Test.htm.
Kde je chyba? Naformátování vzhledu už bych snad zvládl.
Help
Sir Tom
Profil
Martos:
Chyba je v
onmouseout="zobrazSkryj('oddil-01')"

Jakmile kurzor opustí element s touto událostí, ona událost se zavolá (a v tomto případě vykoná funkci zobrazSkryj). Bude nutné spravit podmínky v JS. Určitě tam musí být podmínka: Když je kurzor na podmenu, tak jej neskryvej.

EDIT: Jináč - již se to zde řešilo: http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=13435
Bez JS je již hotové řešení tady: www.tvorba-webu.cz/css/vysouvaci-menu.php
A spousta dalších řešení na Googlu nebo tady na foru po zadání "vysouvací menu" do vyhledavače.
(U těchto hotových ale řešení patrně budeš muset znova spravovat pozicování, aby to překrývalo text...)
Martos
Profil *
Sir Tom:
a jak na to? TO už nedám.
Sir Tom
Profil
Martos:
a jak na to? TO už nedám.
Viz můj předchozí příspěvek. Nejrychlejší bude použít již hotové řešení...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0