ma première solution:
Le Java
<script type="text/javascript" src="jquery-1.4.1.js"></script>
<script type="text/javascript">
<!--
$(document).ready( function () {
// On cache les sous-menus :
$(".navigation ul.subMenu, .navigation ul.subMenu2").hide();
// On sélectionne tous les items de liste portant la classe "toggleSubMenu"
// et on remplace l'élément span qu'ils contiennent par un lien :
$(".navigation li.toggleSubMenu span").each( function () {
// On stocke le contenu du span :
var TexteSpan = $(this).text();
$(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ;
} ) ;
// On modifie l'évènement "click" sur les liens dans les items de liste
// qui portent la classe "toggleSubMenu" :
$(".navigation li.toggleSubMenu > a").click( function () {
// Si le sous-menu était déjà ouvert, on le referme :
if ($(this).next("ul.subMenu:visible").length != 0) {
$(this).next("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") });
}
// Si le sous-menu est caché, on ferme les autres et on l'affiche :
else {
$(".navigation ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") });
$(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("open") });
}
if ($(this).next("ul.subMenu2:visible").length != 0) {
$(this).next("ul.subMenu2").slideUp("normal", function () { $(this).parent().removeClass("open") });
}
// Si le sous-menu est caché, on ferme les autres et on l'affiche :
else {
$(".navigation ul.subMenu2").slideUp("normal", function () { $(this).parent().removeClass("open") });
$(this).next("ul.subMenu2").slideDown("normal", function () { $(this).parent().addClass("open") });
}
// On empêche le navigateur de suivre le lien :
return false;
});
} ) ;
// -->
</script>
Le HTML
<table>
<tr valign="top">
<td>
<ul class="navigation">
<li class="toggleSubMenu"><span><?=$rubrique[2]?></span>
<ul class="subMenu">
<li><a href="index.php?menu=21" title="">• <?=$rubrique[21]?></a></li>
<li><a href="index.php?menu=22" title="">• <?=$rubrique[22]?></a></li>
<li><a href="index.php?menu=23" title="">• <?=$rubrique[23]?></a></li>
<li><a href="index.php?menu=24" title="">• <?=$rubrique[24]?>n</a></li>
</ul>
</li>
</ul>
</td>
</tr>
</table>
<div class="piedpage">
<table>
<tr valign="top">
<td>
<ul class="navigation2">
<li class="toggleSubMenu2"><span><?=$rubrique[2]?></span>
<ul class="subMenu2">
<li><a href="index.php?menu=21" title="">• <?=$rubrique[21]?></a></li>
<li><a href="index.php?menu=22" title="">• <?=$rubrique[22]?></a></li>
<li><a href="index.php?menu=23" title="">• <?=$rubrique[23]?></a></li>
<li><a href="index.php?menu=24" title="">• <?=$rubrique[24]?>n</a></li>
</ul>
</li>
</ul>
</td>
</tr>
</table>
</div>
Le CSS
.navigation {
margin: 0;
padding: 0;
list-style: none;
background: #333;
color: #FFF;
width: 75px;
font: 0.5em "Trebuchet MS", sans-serif;
}
.navigation a, .navigation span {
display: block;
padding: 4px 4px;
color: #FFF;
text-decoration: none;
background:#333 url(menu-item.png) left bottom no-repeat;
}
.navigation .toggleSubMenu a, .navigation .toggleSubMenu span {
background-image: url(menu-item-deroule.png);
}
.navigation .open a, .navigation .open span {
background-image: url(menu-item-enroule.png);
}
.navigation a:hover, .navigation a:focus, .navigation a:active {
text-decoration: underline;
}
.navigation .subMenu {
background: #666 url(subMenu.png) 0 0 repeat-x;
font-size: 1em;
position:absolute;
margin: 0;
padding:0;
border-bottom: 1px solid #666;
}
.navigation ul.subMenu a, .navigation ul.subMenu2 a {
background: none;
padding: 1px 4px;
}
/*===================================*/
.navigation .subMenu2 {
background: #666; url(subMenu.png) 0 0 repeat-x;
font-size: 1em;
position:absolute;
bottom: 22px;
margin: 0;
padding:0;
border-bottom: 1px solid #666;
}
.piedpage {
position:absolute;
bottom: 0px;
}
Il y a surement mieux..
Modifié par maika (27 Sep 2010 - 17:39)