Problème menu déroulant javascript + CSS

Résolu/Fermé
biguiz - 12 juin 2008 à 17:45
shangocubano Messages postés 2 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 17 février 2009 - 17 févr. 2009 à 13:59
Bonjour à tous,
Je suis en train de réaliser un site et j'ai réalisé un menu dont une partie est un menu déroulant.
Tout marche niquel mais le problème est que lorsque le menu se déroule, mes "li" qui ont pourtant une apparence normale se rallongent sur la droite en transparence ce qui a pour effet de prolonger mon site sur la droite sur quelques centaines de pixels (pas de déformation cependant, le site reste en place, il y a juste un espace blanc sur la droite).
A cause de ceci, une scrollbar horizontale apparait en bas de la page du coup, et sous Safari, même lorsque le menu déroulant n'est plus déroulé, cette scrollbar reste affichée en bas, mais on ne peux plus l'utiliser, elle est comme taggée sur ma page...
En gros, c'est comme si mes "li" ne faisaient pas les 130 pixels de largeur souhaité mais eaucoup plus en prolongement sur la droite

Voici mon code :

Script :
<script type="text/javascript">
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
</script>

CSS:
<style type="text/css">
dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
width: 137px;
}
#menuderoulant {
top: 0;
left: 0;
z-index: 100;
height: 23px;
width: 137px;
position: relative;
}
#menuderoulant dl {
width: 137px;
}
#menuderoulant dt {
cursor: pointer;
background-image:url(images/menu3.jpg);
width: 137px;
height: 23px;
color: #006600;
font-family: "Helvetica Neue";
font-size: 14px;
}
#menuderoulant li {
background-image: url(<?php echo $chemin?>images/menu3.jpg);
text-align: left;
width: 137px;
border: 1px solid white;
}
#menuderoulant li a, #menuderoulant dt a {
color: #006600;
text-decoration: none;
display: block;
width:inherit;
}
#menuderoulant li a:hover, #menuderoulant dt a:hover {
color: #00216B;
width: 137px;
}
#menuderoulant ul a:hover {
width: 137px;
}
#menuderoulant ul a:hover {
width: 137px;
}
</style>


Page php :
<div id="menuderoulant">
<dl onMouseOver="javascript:montre('smenu1');" onmouseout="javascript:montre('');">
<dt><table width="100%"><tr>
<td valign="middle" align="center">Loisirs & Sports </td>
</tr></table></dt>
<dd id="smenu1">
<ul>
<li><a href="#"><strong>•</strong> Parcs d'attraction</a></li>
<li><a href="#"><strong>•</strong> Tourisme fluvial</a></li>
<li><a href="#"><strong>•</strong> Centres équestres</a></li>
<li><a href="#"><strong>•</strong> Sports mécaniques</a></li>
<li><a href="#"><strong>•</strong> Circuits VTT</a></li>
<li><a href="#"><strong>•</strong> Voies vertes</a></li>
<li><a href="#"><strong>•</strong> Sports nautiques</a></li>
<li><a href="#"><strong>•</strong> Golf</a></li>
<li><a href="#"><strong>•</strong> Piscines</a></li>
<li><a href="#"><strong>•</strong> Bowling, billard</a></li>
<li><a href="#"><strong>•</strong> Discothèques</a></li>
</ul>
</dd>
</dl>
</div>



Je ne sais pas si j'ai été très clair car c'est difficile d'expliquer ce problème sans le voir...

Je vous remercie par avance de votre aide !
A voir également:

6 réponses

shangocubano Messages postés 2 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 17 février 2009 8
17 févr. 2009 à 13:59
Je repare ton code , maintenant tu peut l'utiliser


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSS</title>
<script type="text/javascript">
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
</script>

CSS:
<style type="text/css">
dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
width: 137px;
}
#menuderoulant {
top: 0;
left: 0;
z-index: 100;
height: 23px;
width: 137px;
position: relative;
}
#menuderoulant dl {
width: 137px;
}
#menuderoulant dt {
cursor: pointer;
background-image:url(images/menu3.jpg);
width: 137px;
height: 23px;
color: #006600;
font-family: "Helvetica Neue";
font-size: 14px;
}
#menuderoulant li {
background-image: url(<?php echo $chemin?>images/menu3.jpg);
text-align: left;
width: 137px;
border: 1px solid white;
}
#menuderoulant li a, #menuderoulant dt a {
color: #006600;
text-decoration: none;
display: block;
width:inherit;
}
#menuderoulant li a:hover, #menuderoulant dt a:hover {
color: #00216B;
width: 137px;
}
#menuderoulant ul a:hover {
width: 137px;
}
#menuderoulant ul a:hover {
width: 137px;
}
</style>

</head>

<body>
<div id="menuderoulant">
<dl onMouseOver="javascript:montre('smenu1');" onmouseout="javascript:montre('smenu1');">
<dt><table width="100%"><tr>
<td valign="middle" align="center">Loisirs & Sports </td>
</tr></table></dt>
<dd id="smenu1">
<ul>
<li><a href="#"><strong>•</strong> Parcs d'attraction</a></li>
<li><a href="#"><strong>•</strong> Tourisme fluvial</a></li>
<li><a href="#"><strong>•</strong> Centres équestres</a></li>
<li><a href="#"><strong>•</strong> Sports mécaniques</a></li>
<li><a href="#"><strong>•</strong> Circuits VTT</a></li>
<li><a href="#"><strong>•</strong> Voies vertes</a></li>
<li><a href="#"><strong>•</strong> Sports nautiques</a></li>
<li><a href="#"><strong>•</strong> Golf</a></li>
<li><a href="#"><strong>•</strong> Piscines</a></li>
<li><a href="#"><strong>•</strong> Bowling, billard</a></li>
<li><a href="#"><strong>•</strong> Discothèques</a></li>
</ul>
</dd>
</dl>
</div>

</body>

</html>
1
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210
12 juin 2008 à 17:52
A priori pas de problème avec moi... ni sous FX ni sous safari...
http://tiller.sama.hd.free.fr/CCM/test.php
0
Oui j'avais fais un test comme ça et je n'avais pas le problème. Ca doit venir du fait que cette partie de mon menu se trouve en milieu de page.
Peut être que si vous mettiez ce menu au milieu de la page vous verriez le problème. Car il se peut que sur votre page, les sous menus se soient prolongés sur la droite mais vu qu'il est collés à gauche, le prolongement s'arrête à temps pour ne pas agrandir la page...

Remplacez ce bout dans le CSS, ça sera peut être plus parlant car là le texte devrait suivre ce prolongement et se décaler à droite du menu :
#menuderoulant li {
background-image: url(<?php echo $chemin?>images/menu3.jpg);
text-align: left; ======> mettre center à la place
width: 137px;
border: 1px solid white;
}
0
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210
12 juin 2008 à 18:04
Aucun changement, ne pourrais t'on pas carrement voir ta page?
0

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

Posez votre question
Ma page n'est malheureusement pas en ligne... J'essaierai de la mettre en ligne demain midi si le problème n'est toujours pas résolu.
Donc en changeant le CSS comme je t'ai dis, le texte reste bien sous le menu ?
Si c'est le cas, le problème pourrait venir de la div générale englobant le menu... Je verrai demain matin.

Merci de ton aide, je donne des nouvelles demain !
0
Bon ben en fait j'ai toruvé !!!
Ca venait d'une classe CSS sur le menu général #menu a:link, a,visited où j'avais donné comme largeur 1134px, largeur correspondant à la largeur globale du menu. Or là en fait ça me passait mes cellules ayant un lien vers une autre page en largeur 1134px, c qui est logique vu mon CSS.
Voilà ce qu'il fallait que je fasse :
#menu
width : 1134px

#menu a:link, a:visited
width : 100px (correspondant à la largeur de mes "li")



Merci quand même de votre aide ;)
0