28172 sujets

CSS et mise en forme, CSS3

Bonjour,
Je suis débutante en CSS et j'ai créé un menu avec des sous-menu. La mise en forme des menus s'applique aussi au sous-menu mais je souhaiterai supprimer cette dernière pour les sous-menu (enlever les bordures).
Voici mon code: J'ai testé border:none pour le sous-menu mais cela ne fonctionne pas, pouvez-vous m'aider s'il vous plait?
Un grand merci d'avance!

/*menu*/
ul#menu_horizontal{
color: orange;
padding:0;
margin:0;
}

ul#menu_horizontal li{
border:orange 1px solid;
background-color:#E0DC63;
border-radius:5px 5px 0px 0px;
list-style:none;
float:left;
margin:5px;
padding:1px 10px 1px 10px;
font-weight:bold;
}

ul#menu_horizontal li a{
color:orange;
text-decoration:none;
display:block;
padding:5px;
}

ul#menu_horizontal li a:hover{
color:#E0DC63;
text-decoration:none;
background-color:orange;
}
/*fin menu*/


/*sous-menu*/
ul#menu_horizontal li .sous_menu{
display:none;
border:none;
}

ul#menu_horizontal li:hover .sous_menu{
display:block;
}
/*fin sous menu*/
Administrateur
Hello,

Difficile de deviner sans environnement de tes, mais je me lance :

ul#menu_horizontal li

signifie "tous les li descendants de #menu_horizontal", donc les sous-menus auront effectivement également la bordure.

Essaye de changer pour :
ul#menu_horizontal > li

qui signifie "tous les li enfants directs de #menu_horizontal", donc les sous-menus ne devraient plus avoir de bordure.
Meilleure solution
#menu_horizontal est censé être unique dans la page HTML.
De plus, les navigateurs maintiennent une liste de tous les les éléments qui ont un attribut id pour avoir un accès direct.
ul#menu_horizontal doit en principe ralentir la navigation puisque le navigateur va rechercher tous les ul qui ont un id égal menu_horizontal, au lieu d'utiliser la liste précèdente.