[Un autre] problème de menu css :(

Fermé
Karkwa - 19 janv. 2012 à 23:07
 Karkwa - 22 janv. 2012 à 20:39
Bonjour,
Je vous écris encore une fois à propos d'un menu déroulant en code css (et oui, je sais que j'ai déjà un post là-dessus en cours, mais ce n'est pas le même problème!). Voilà, j'ai un menu déroulant que je me suis fait et que j'utilise depuis quelques temps déjà. Et, jusqu'à tout récemment, tout allait bien. Par contre, depuis quelques jours, je n'arrive plus à lui faire afficher les sous-catégories correctement. Je m'explique : le menu est à l'horizontal, avec le déroulement vertical sous les onglets lors du survol de ces derniers. De plus, c'est un menu déroulant à 3 niveaux : le premier est toujours visible; le second (premier « sous-menu ») est visible en-dessus lorsqu'on passe le curseur sur la catégorie désirée; et le troisième niveau (deuxième « sous-menu ») est accessible via certains sous-menus du niveau 2, toujours lorsqu'on passe le curseur dessus.

C'est ce troisième niveau qui me pose un problème : il ne s'affiche pas lorsque le curseur passe au-dessus des sous-menu de niveau 2 qui devraient afficher le niveau 3. Par contre, tout le reste marche (tous les sous-menus de 2e niveau; couleurs et tout le reste)... je trouve donc bizarre que seulement les sous-menus du niveau 3 ne s'affichent pas, et j'ai regardé mon code, sans résultats, je ne sais trop où donner de la tête.

Voilà, je vous colle un code de ce menu, ainsi que celui des styles qui s'occupent de le faire fonctionner. Voici le code du menu lui-même :


<div id="monmenu2">
<ul class="niveau1">

<li><a href="#" class="site" title="Le site"><span class="sitedisplace">Le site</span></a>
	<ul class="niveau2">
	<li><a href="#" class="lienmenu">Home Page</a></li>
	<li><a href="#" class="lienmenu">Introduction</a></li>				</ul>
	</li>
			
	<li><a href="#" class="actu" title="Le site"><span class="actudisplace">Actu</span></a>
	<ul class="niveau2">
	<li><a href="#" class="lienmenu">News</a></li>
	<li><a href="#" class="lienmenu">Archives</a></li>
	</ul>
</li>
			
	<li><a href="#" class="equipe" title=" "><span class="equipedisplace">Équipe</span></a>
	<ul class="niveau2">
	<li class="plus"><a href="#">Biographie</a></li>
		<ul class="niveau3">
		<li><a href="#" class="lienmenu">Histoire</a></li>
		<li><a href="#" class="lienmenu">Persos</a></li>
		</ul>
					
		<li class="plus"><a href="#" class="lienmenu">Runs</a></li>
		<ul class="niveau3">
		<li><a href="#" class="lienmenu">Jours</a></li>
		<li><a href="#" class="lienmenu">Endroits</a></li>
		<li><a href="#" class="lienmenu">Serie</a></li>
		</ul>
					
	<li class="plus"><a href="#" class="lienmenu">Video</a></li>
		<ul class="niveau3">
		<li><a href="#" class="lienmenu">Clips</a></li>
	<li><a href="#" class="lienmenu">Tutoriels</a></li>
		</ul>					
									
	</ul>
	</li>
			
			
	<li><a href="#" class="multimedia" title="Media"><span class="multimediadisplace">Multimedia</span></a>
	<ul class="niveau2">
	<li><a href="#" class="lienmenu">Images</a></li>
	<li><a href="#" class="lienmenu">Presse</a></li>
	<li><a href="#" class="lienmenu">Logos</a></li>
	<li><a href="#" class="lienmenu">Jeux</a></li>
	</ul>
	</li>
			
	<li><a href="#" class="interactif" title="Interactif"><span class="interactifdisplace">Interactif</span></a>
	<ul class="niveau2">
	<li><a href="#" class="lienmenu">Forum</a></li>
	<li><a href="#" class="lienmenu">Livre dor</a></li>
	<li><a href="#" class="lienmenu">Sondages</a></li>
	</ul>
</li>
			
				

</ul>
</div>



Et le code CSS, situé dans une feuille de style externe, qui permet d'éditer et de faire fonctionner le menu :


#monmenu2 {
		font-family: arial, verdana, sans-serif;
		font-size: 85%;
		font-weight:bold;
		}

#monmenu2 ul {
		margin:0px; 
		padding: 0px;
		}		
		
#monmenu2 ul ul {
		display: none; 
		position: absolute; 
		margin:0px; 
		padding: 0px; 
		border: 1px solid red;
		}
		
#monmenu2 ul.niveau2 {left: 0px; top: 26px;} 	
#monmenu2 ul.niveau3 {left: 160px; top: -1px;}

#monmenu2 li {
		list-style-type: none; 
		position: relative; 
		width: 100px; 
		padding: 0px; 
		margin: 0px; 
		float: left; 


		border: 1px solid red;
		
		}

#monmenu2 li:hover {
			background-color: green; 
			border: 1px solid BLUE;
			}
			
#monmenu2 li.sfhover {
			background-color: green; 
			border: 1px solid BLUE;
			}

#monmenu2 li a {text-decoration:none;}

#monmenu2 li:hover ul.niveau2, #monmenu2 li li:hover ul.niveau3, #monmenu2 li.sfhover ul.niveau2, #monmenu2 li li.sfhover ul.niveau3 {display:block; background-color: yellow;}

#monmenu2 li.plus {background-position:right; background-image: url(rightarrow2.gif); background-repeat: no-repeat;}

#monmenu2 ul ul li{  
	margin:0px; 
	padding: 0px;  
	width: 150px; 
	background-color: #A9A9A9;
	text-align: left;
	border: 1px solid pink;
}


/* **Ci-dessous sont les codes pour que le bouton change lorsqu'il y a un rollover dessus (tout en CSS, de par les liens)** */

a.site { 
	display: block;
	width: 100px;
	height: 25px;
	text-decoration: none;
	background: url("../../site5.png");     } 
	
a.site:hover {
	background-position: -100px 0;     } 
	
.sitedisplace {     position: absolute;     left: -5000px;     }

a.actu { 
	display: block;
	width: 100px;
	height: 25px;
	text-decoration: none;
	background: url("../../actualite5.png");     } 
	
a.actu:hover {
	background-position: -100px 0;     } 
	
.actudisplace {     position: absolute;     left: -5000px;     }

a.equipe { 
	display: block;
	width: 100px;
	height: 25px;
	text-decoration: none;
	background: url("../../groupe5.png");     } 
	
a.equipe:hover {
	background-position: -100px 0;     } 
	
.equipedisplace {     position: absolute;     left: -5000px;     }

a.multimedia { 
	display: block;
	width: 100px;
	height: 25px;
	text-decoration: none;
	background: url("../../multi5.png");     } 
	
a.multimedia:hover {
	background-position: -100px 0;     } 
	
.multimediadisplace {     position: absolute;     left: -5000px;     }


a.interactif { 
	display: block;
	width: 100px;
	height: 25px;
	text-decoration: none;
	background: url("../../interactif5.png");     } 
	
a.interactif:hover {
	background-position: -100px 0;     } 
	
.interactifdisplace {     position: absolute;     left: -5000px;     }


/* Liens du menu */

a.lienmenu {
	color:black;
	text-decoration:none;
}

a.lienmenu:visited {
	color:black;
	text-decoration:none;
}

a.lienmenu:hover {
	color:gold;
	text-decoration:none;
}





Voilà ce que j'ai pour le moment.... je sais que ça peut paraitre gros (en tout cas moi je sais plus où chercher!) mais j'espère (je suis sûr!! ^^) que quelqu'un ici pourra arriver à résoudre ce problème. La seconde partie (les boutons qui changent) a été ajoutée récemment... alors c'est peut-être à cause d'elle que ça s'est mis à ne plus fonctionner sans que je m'en apperçoive, mais je n'en sais trop rien. Et si c'est ça, comment pourrais-je faire pour concilier tout ça pour que mon menu (re-)marche!? :)

Merci beaucoup... si vous avez des questions allez-y, je vais faire mon possible!!


A voir également:

7 réponses

Juste comme ça, je suis encore en train de faire des tests et d'essayer des trucs, et j'ai remarqué que, quand je prend mon menu tout seul, il semble fonctionner correctement (affichage de tous les niveaux au passage de la souris...). Par contre, quand j'inclus le menu dans ma page (il est dans une page menu.php tout seul, et je l'affiche dans différentes pages à l'aide d'un code php), c'est là que ça semble se mettre à ne plus fonctionner. Pourquoi ??

Voilà le code php que je mets sur ma page, qui affiche le menu :


<?php
include('menu.php');
?>



Est ce que quelque chose peut le faire bugger ? Pourquoi ça fait ça!? :( Merci encore! ^^
0
Ce que tu souhaites faire c'est :
http://css.developpez.com/galerie/demo/menus/horizontalderoulant1/ ???
Si oui, tu trouveras une explication de comment t'y prendre sur cette page :
http://css.developpez.com/galerie/?page=menus-horizontaux (Menu horizontal déroulant 1).
0
Personnellement j'ai tester ton code en dur, et tes sous menu niveau 3 ne s'affichaient pas (avec firefox v9.0.1).
0
Ouais, ça a l'air bien, je vais regarder et l'essayer... c'est bien un menu horizontal déroulant que je veux réaliser. Par contre, j'aimerais aussi trouver ce qui se passe avec mon menu puisqu'il semble fonctionner lorsque je l'ouvre tout seul. C'est uniquement quand il est affiché dans ma page (via le code PHP que j'ai collé dans mon message plus haut) que ça m'a l'air de ne pas fonctionner (pour les sous-menus de niveau 3 uniquement). Pourquoi? Si quelqu'un d'autre veut essayer de résoudre l'affaire! =)

Soit dit en passant, merci Dakota pour ton aide et le lien que tu me proposes!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Personne n'a d'idée à ce sujet!? :( Je continu d'essayer différents trucs, mais je n'y arrive toujours pas. On dirait vraiment que c'est uniquement quand le menu passe par le code PHP suivant que ça ne fonctionne pas :

<?php
include('menu.php');
?>


Sinon, quand j'ouvre la page du menu toute seule, les sous-menus de niveau 3 s'affichent. Quelqu'un a une idée/suggestion? Merci!
0
Bon, toujourd en train d'essayer différentes choses, je viens de constater quelque chose d'intéressant : on dirait que c'est mon type de document qui bloque ou non cette fonctionnalité du menu. Mon document était en XHTML 1.0 Strict, et ça ne fonctionnait pas. Par contre, si je supprime les balises et indication de XHTML et que je commence un simple document HTML avec la balise <html> , là, ça fonctionne; les sous-menus de niveau 3 s'affichent. Pourquoi? Est-ce qu'il y a quelque chose que je devrais adapter? Et quoi!? Merci de votre aide ^^
0
Je fais un petit up.... toujours personne qui n'a une idée au sujet de mon problème ? Pourquoi mon menu CSS n'affiche pas les sous-menus de troisième niveau en XHTML 1.0 Strict (ou peu importe quel XHTML) alors que ça fonctionne en HTML normal ? Quelqu'un a une solution?

Merci beaucoup! =)
0