28172 sujets

CSS et mise en forme, CSS3

Bonjour,

Je n'ai pas pour habitude de demander de l'aide, mais la sa fait un moment que je galère sur un bug seulement sur Google Chrome (étonnant que cela ne soit pas sur IE Smiley langue )

j'ai un soucis de mise en page sur menu coulissant, je vais commencer par vous exposer le code. J'ai essayer de réduire au max les fichiers pour ne pas inonder le sujet.

Le code html :

<!doctype html>
<html>
<head>
	<title>Demo</title>
	<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<div id="menubar">
    <div id="menu">
        <ul>
           <li><a href="#">Home</a></li>
           <li class="has-sub"><a href="#">Products</a>
              <ul>
                 <li class="has-sub"><a href="#">Product 1</a>
                    <ul>
                       <li><a href="#">Sub Item</a></li>
                       <li><a href="#">Sub Item</a></li>
                    </ul>
                 </li>
                 <li class="has-sub"><a href="#">Product 2</a>
                    <ul>
                       <li><a href="#">Sub Item</a></li>
                       <li><a href="#">Sub Item</a></li>
                    </ul>
                 </li>
              </ul>
           </li>
           <li class="has-sub"><a href="#">Contact</a>
              <ul>
                 <li class="has-sub"><a href="#">Product 1</a>
                    <ul>
                       <li><a href="#">Sub Item</a></li>
                       <li><a href="#">Sub Item</a></li>
                    </ul>
                 </li>
                 <li class="has-sub"><a href="#">Product 2</a>
                    <ul>
                       <li><a href="#">Sub Item</a></li>
                       <li><a href="#">Sub Item</a></li>
                    </ul>
                 </li>
              </ul>
           </li>
           <li><a href="#">About</a></li>
        </ul>
    </div>
</div>
</body>
</html>


Le code css

body {
	margin:0;
	padding:0;
}

#menubar {
	position:fixed;
	z-index:999;

	width:100%;
	line-height:40px;
	background:#000000;
}

#menubar div, ul, li {
	margin:0;
	padding:0;
	list-style:none;
	text-decoration:none;
}
#menubar a {
	list-style:none;
	text-decoration:none;
}

#menubar #menu > ul > li {
	display:inline-table;
}
/* Level 1 Links */
#menubar #menu > ul > li > a {
	color:#A0A0A0;
	line-height:40px;
	padding:15px 10px 15px 25px;

	transition:all .3s linear .1s;
}
/* Level 1 Links Hover */
#menubar #menu > ul > li:hover > a, #menubar #menu > ul > li.active > a {
	color:#FFFFFF;
	text-shadow:0px 0px 5px rgba(255, 255, 255, 0.4);
}

/* Level 2+ */
#menubar #menu ul li {
	position:relative;
}
/* Level 2+ Container */
#menubar #menu ul ul {
	opacity:0;
	visibility:hidden;

	padding:10px 0 10px 0;	
	background:#000000;
	position:absolute;
	width:180px;

	transition:all .5s linear .1s;
}
/* Level 2 Container */
#menubar #menu > ul > li > ul {
	top:45px;
	left:-150px;
}
/* Level 2 Container Hover */
#menubar #menu > ul > li:hover > ul {
	opacity:0.8;
	visibility:visible;
	left:0;
}

/* Level 2+ Links */
#menubar #menu ul ul a {
	color:#323232;
	display:block;
	line-height:20px;

	transition:all .5s linear .1s;
}
/* Level 2+ Links Hover */
#menubar #menu ul ul li:hover > a {
	background:#f0f0f0;
}

/* Level 3+ Container */
#menubar #menu ul ul ul {
	top:-10px;
	left:335px;
}
/* Level 3+ Container Hover */
#menubar #menu ul ul li:hover ul {
	opacity:0.8;
	visibility:visible;
	left:185px;
}


Je vais tenter d'exposer mon problème parce qu'il est un peu difficile à expliquer, il faut essayer le lien que je vous fournie plus bas pour voir le comportement.

Mon problème étant que les sous menu apparaissant au survol des liens "Product" et "Contact" n'on pas la bonne dimension en hauteur et pareil pour les sous menu des sous menu, etc ...
Quand vous survolez une première fois "Product" et/ou "Contact" les sous menu apparaisse correctement, mais si on les survols une deuxième fois, les sous menu n'ont pas la bonne hauteur, sauf quand ils arrivent à la fin de l'animation. Et bien sur même problème sur sous sous menu.

Petite info : j'ai remarqué que si je supprime la ligne "transition:all .5s linear .1s;" dans le fichier css dans la section "#menubar #menu ul ul a" le problème n’apparaît plus.

Je vous rappelle que le problème apparaît seulement dans Google Chrome.

Exemple du problème : http://w.at.t.free.fr/demo/
Salut, j'ai voulu me pencher sur ton problème mais le lien démo ne fonctionne pas, enfin rien ne se passe quand je survol les menus ?!
Modifié par artsx (14 Nov 2013 - 14:43)
Tu doit avoir un problème alors parce que je viens de tester et sa fonctionne (enfin y a toujours le bug, mais les sous menu apparaise), J'ai IE10 et 11, Firefox V 25 et Google Chrome V 31.
Tu à essayer avec quel navigateur ?
Modifié par xortexx (14 Nov 2013 - 18:51)
aucun défaut ??? alors sa c'est la meilleur ^^

Je viens de remarquer que le problème surviens quand tu survol "Contact" pour la deuxième fois ou plus, et le comportement est normal sur "Product".

peux tu me confirmer gc-nomade ? veille bien à se que le sous menu disparaisse bien quand tu veux re-survoler le lien.
oui effectivement, y a du mieux avec le z-index, mais par contre du coup un autre problème surviens avec la suppression de "visibility:hidden;" les sous menu apparaisse quand tu met ta souris la ou apparaisse les sous menu, en dessous des liens de la barre.

par contre je sais pas si ta fait gaffe dans mon exposé du problème, quand on supprime la ligne "transition:all .5s linear .1s;" dans la section "/* Level 2+ Links */ #menubar #menu ul ul a" le problème n’apparaît plus.
xortexx a écrit :
oui effectivement, y a du mieux avec le z-index, mais par contre du coup un autre problème surviens avec la suppression de &quot;visibility:hidden;&quot; les sous menu apparaisse quand tu met ta souris la ou apparaisse les sous menu, en dessous des liens de la barre.

par contre je sais pas si ta fait gaffe dans mon exposé du problème, quand on supprime la ligne &quot;transition:all .5s linear .1s;&quot; dans la section &quot;/* Level 2+ Links */ #menubar #menu ul ul a&quot; le problème n’apparaît plus.


Oui, c'est justement au cours de la transition qu'il y a un problème, je pense que opacity et visibility:hidden/visible ne cohabite pas bien dans chrome, de mon point de vue, c'est incohérent , ce serait l'un ou l'autre.

Pourtant visible et hidden, ne sont pas des valeurs numériques et devraient basculer sans être prise en compte par transition: ; .

Bizarrement, ton test sur free fonctionne, en testant dans codepen ton menu ne fonctionne plus, du au visibility:hidden justement. http://codepen.io/anon/pen/LgwFB

Avec z-index 0-1au lieu de visibility http://codepen.io/anon/pen/frnGg le comportement semble celui attendu.

Je comprend pourquoi le visibility dans ton code, je pense que c'est une erreur, juste mon avis perso Smiley smile
++
Juste à cause chrome va falloir que je revoie entièrement se menu, il n'aime pas l'animation que je souhaite Smiley decu , dommage j'aimais bien l'effet de coulissage des sous menu.

merci pour ton aide gc-nomade, sa ma permis de remarquer qu'il n'y a pas que IE qui pose problème Smiley langue