ugrás a tartalomhoz

Ul/li menü gond

Bitman · 2008. Aug. 31. (V), 14.04
Sziasztok!

Egy konkurens oldalon pár napja már feldobtam a témát, de még sajnos nem kaptam rá választ, gondoltam megpróbálom itt is, ha nem gond..

Szóval ismét szeretném a segítségeteket kérni egy valószínűleg triviális problémában.. De nem jövök rá, hogy hogy lehetne megoldani, nyílván a pozicionálásokat kéne variálni, vagy esetleg z-index vagy overflow paraméterrel trükközni, de nem jött össze.

Szóval: Joomlába kéne bevarázsolnom egy egy vízszintes menüsort ul/li listával megoldva, melynek egyes menüpontjain belül vannak almenük is, amik lefele nyílnak ki, dropdown menü szerűen.

A gond csupán annyi, hogy a szülő menüpontok (szélességileg) viszonylag kicsik, és az alá lenyíló (ul -> li -> ul) lista szélesebb nála, és lenyíláskor a szülő menüpont következő elemét eltolja jobbra, a lenyílt almenü jobb szélénél kezdődik. Ezzel az egész menüsor elcsúszik.

Arra kellene tehát megoldás, hogy ez az eltolás megszűnjön, azaz valahogy el kéne érni, hogy a szülő menüsor elemeinek fix pozíciója legyen.

Az elcsúszás a Menü3 és 4 menüpontoknál figyelhető meg.
A CSS tudom hogy nem hibátlan, vannak benne az öröklődések miatt felesleges deklarálások, stb, de majd kisakkozom őket, de most egyenlőre a célnak megteszi.

A lecsupaszított példakód, htmlbe includolt stíluslappal:

<html>
<head>
	<style>
body {
	background-color: grey;
}
#pillmenu {
	margin: 0 auto;
	color: white;
    position:relative;
    top:-5px;
    left:79px;
    z-index:100;
    margin:0;
    padding:0;
}
#pillmenu ul {
	margin: 0;
	padding: 0 0 0 14px;
	list-style: none;
}

#pillmenu li {
	float: left;
	margin: 0;
	padding: 0;
	height: 30px;
}

/* MENÜ ELEJE*/

#mainlevelmainnav,#mainlevelmainnav ul{
    float:left;
    list-style:none;
    line-height:1em;
    background:transparent;
    font-weight: bold;
    margin:0;
    padding:0;
}
#mainlevelmainnav a{
    display:block;
    color:#fff;
    text-decoration:none;
    margin-right:15px;
    padding:0.3em;
}
#mainlevelmainnav li{
    float:left;
    padding:0;
}
#mainlevelmainnav li ul{
    position:absolute;
    left:-999em;
    height:auto;
    width:15em;
    font-weight:bold;
    background:#B93D3D url('../images/felso_menu.jpg') 100% 100% no-repeat;
    margin:0;
}
#mainlevelmainnav li li{
    width:15em;
    background:#B93D3D url('../images/felso_menu.jpg') 100% 100% no-repeat;
}
#mainlevelmainnav li li a:hover{
		color: #fff;
}
#mainlevelmainnav li ul a{
    width:15em;
    color:#fff;
	padding-top: 9px;
    /*font-size:0.9em;*/
    line-height:1em;
    font-weight: bold;
	clear: both;
}
#mainlevelmainnav li:hover ul ul,#mainlevelmainnav li:hover ul ul ul,#mainlevelmainnav li.sfhover ul ul,#mainlevelmainnav li.sfhover ul ul ul{
	color: #fff;
    left:-999em;
	top: 0px;
	clear: both;
}
#mainlevelmainnav li:hover ul,#mainlevelmainnav li li:hover ul,#mainlevelmainnav li li li:hover ul,#mainlevelmainnav li.sfhover ul,#mainlevelmainnav li li.sfhover ul,#mainlevelmainnav li li li.sfhover ul{
    z-index:6000;
	position: relative;
    left:0px;
	top: 0px;
	color: #FFFFFF;
	clear: both;
}
#mainlevelmainnav li li:hover,#mainlevelmainnav li li.sfhover{
	color: #FFFFFF;
    background:#B93D3D url('../images/felso_menu.jpg') 100% 100% no-repeat;
}
	</style>
</head>
<body>
<div id="pillmenu">
	<ul  id="mainlevelmainnav">
		<li><a href="#" class="mainlevelmainnav" id="active_menumainnav">Menü1</a></li>
		<li><a href="#" class="mainlevelmainnav">Menü2</a>
			<ul>
				<li><a href="#">Menü2 almenü</a></li>
				<li><a href="#">Menü2 hosszú almenü</a></li>
			</ul>
		</li>
		<li><a href="#" class="mainlevelmainnav">Menü3</a>
			<ul>
				<li><a href="#">Menü3 hosszú almenüje....</a></li>
				<li><a href="#">Menü4 itt is eltolódik...</a></li>
			</ul>
		</li>
		<li><a href="#" class="mainlevelmainnav">Menü4</a></li>
		<li><a href="#" class="mainlevelmainnav">Menü5</a></li>
		<li><a href="#" class="mainlevelmainnav">Menü6</a></li>
		<li><a href="#" class="mainlevelmainnav">Menü7</a>
			<ul>
				<li><a href="#">itt nincs eltolás</a></li>
				<li><a href="#">mert nincs mit eltolni :)</a></li>
			</ul>
		</li>
	</ul>
</div>

</body>
</html>
Biztos van valami egyszerű megoldás, de nem jövök rá.
A #pillmenu relatív pozícióját nem kéne zargatni, az így pont jó helyen jelenik meg. :)

Előre is köszönök mindenféle segítséget!

Üdv,
Ákos
 
1

Most hirtelen nem tudom a pontos választ, de

Ustak · 2008. Aug. 31. (V), 15.04
a jquery szuperhal (->examples->with supersubs fül) menüje tud ilyet, hátha segít!
2

Re: Superfish

Bitman · 2008. Aug. 31. (V), 17.28
Helló!

Köszi a Superfisht, ezzel megkerültem a problémát :)

Üdv,
Ákos