28220 sujets

CSS et mise en forme, CSS3

Bonjour,
Ca y est, je suis entrain de m'y mettre (au css) de façon un peu plus complexe que ce que je faisais avant.
J'ai donc suivi les tutos de maitre Raph, et tout va plutôt bien sauf que dans la pratique j'ai besoin de faire un site avec 2 menus déroulant sur 1 m^me page.

bien sur, là c'est la cartacar les balises sont les mêmes, donc c'est le bronx car il me confond tout.
Exemple concret avec 2 pages qui ne doivent en former qu'une :
http://www.aliane.fr/test/css/cssgauche.htm et http://www.aliane.fr/test/css/csshaut.htm

Comment faut il faire ? j'ai essayée plusieurs trucs mais rien ne fonctionne.
Merci de votre aide Smiley lol
Modifié par la ptiote (30 Mar 2005 - 11:51)
Administrateur
Hello,

Il faut que tu nommes chaque menu différemment, avec un id pour chacun.

Par exemple : ton menu gauche est actuellement nommé
DL id=menu

Tu pourrais le nommer "menu1", et l'autre "menu2".

Ensuite, il faut faire coincider ces id dans la feuille de style.
Bonjour Raphael,

J'ai donc essayée de comprendre ton message et de l'appliquer.
Cela marche en partie car comme tu t'en rendra compte sur http://www.aliane.fr/test/css2/cssgauche.htm le menu du haut déconne franchement.

J'ai essayé plusieurs pistes mais suis à bout d'idées.
Peux tu m'expliquer pourquoi ma page ne fonctionne pas ?

Les feuilles de styles sont sous http://www.aliane.fr/test/css2/menuhaut.css et http://www.aliane.fr/test/css2/menugauche.css.

Peut e^tre qu'a force de chercher dans tous les sens j'ai oublié un truc gros comme une maison mais je pense que la source de mon erreur est plus grave que cela.
Merci de ton aide
Smiley ohwell
Administrateur
Pour commencer, il ne te faut qu'une seule feuille de style pour toute la page. Tu vas t'embrouiller avec deux feuilles.

Ensuite, tu t'embrouilles effectivement :
- tu places ton menu 1 dans un bloc <div> que tu nommes "<DIV id=menu1>" (en passant, je t'avais conseillé de rajouter des quotes autour de menu1)
- tu laisses le menu 2 dans le <dl> que tu nommes "<DL id=menu2>"

Ensuite, dans tes CSS, tu as plein d'éléments qui se répètent, par exemple "#smenu1" qui est le même pour les deux menus.
Pour différencier tous les éléments, il faut utiliser la hierarchie : "#menu1 #smenu1" par exemple.
Sinon, l'élément ne sera interprété qu'une seule fois.
j'essaye de reprendre par le début.

J'avais pas suivi la subtilité pour les "" je pensais que tu les avait mit pour nommer les éléments.
donc je vais le faire.

Il me semblait plus simple de faire 2 feuilles de styles car un moins je pouvais voir rapidement laquelle déconne et puis surtout ...

Pour tout mettre sur 1 feuille de style il me faudrait avoir qu'un seul élément body par exemple (ainsi qu'1 DL, DT, DD, UL et LI) car ce sont balises ayant une orthographe unique me semble t'il (je ne peux donc pas appeller le premier body1 et l'autre body2 ?)

Or dans les 2 menus ces même balises ont des paramètres propre qui servent à parametrer ces menu.

Je vois pas trop comment supprimer une partie d'un des 2 menus par conséquent mettre les attributs de chacun des menus sur une feuille de style unique ???
salut la ptiote

je crois que la syntaxe pour différencier les menu dans le css est celle la

.menu1 {
...
	}

ul.menu1  {
...
	}

.menu1 li {
...
	}

.menu1 li a {
...
	}

.menu1 li a:hover {
...
	}


et pareil pour les dt dd dl sauf que dans le code il faut déclarer des class et non des id
exemple :
<div class="menu1">
<ul class="menu1">
<li class="menu1"></li>
<li class="menu1"></li>
</ul>
</div>


etc ...


Bonn courage à toi
Modifié par GuizBizet (11 Mar 2005 - 14:41)
Administrateur
la ptiote a écrit :
Pour tout mettre sur 1 feuille de style il me faudrait avoir qu'un seul élément body par exemple (ainsi qu'1 DL, DT, DD, UL et LI) car ce sont balises ayant une orthographe unique me semble t'il (je ne peux donc pas appeller le premier body1 et l'autre body2 ?)

Justement, c'est bien le problème : si tu as plusieurs feuille de styles, les déclarations vont s'écraser.

Exemple :
- dans la première feuille CSS, tu dis "body {background: blue}"
- dans la première feuille CSS, tu dis "body {background: red}"

... alors seule a deuxième règle sera prise en compte, elle écrasera la première.

Et c'est justement le problème que tu as avec tes 2 feuilles : les dt, dd, etc. s'écrasent et seuls les deuxièmes sont conservés.
D'où l'utilité de n'avoir qu'une feuille et de bien différencer les éléments avec des id ou des classes Smiley cligne
Administrateur
GuizBizet a écrit :
salut la ptiote

je crois que la syntaxe pour différencier les menu dans le css est celle la

.menu1 {
...
	}

ul.menu1  {
...
	}

.menu1 li {
...
	}

.menu1 li a {
...
	}

.menu1 li a:hover {
...
	}


et pareil pour les dt dd dl sauf que dans le code il faut déclarer des class et non des id
exemple :
<div class="menu1">
<ul class="menu1">
<li class="menu1"></li>
<li class="menu1"></li>
</ul>
</div>


etc ...


Bonn courage à toi

Houlà, merci de ne pas être atteint de Classite aïgue Smiley smile
Il est inutile de répéter les classes, il faut utiliser la hierarchie.
Et dans ton cas, ne surtout pas utiliser la même classe pour plusieurs balises différentes !!!
<div class="menu1"> suffit amplement pour désigner tout ce que <div> contient.
Modifié par Raphael (11 Mar 2005 - 14:49)
Bon et bien je viens de rentrer d'1 Rv en voit avec plaisir que vous vous êtes démené pour me répondre.
Ca va donc être à mon tour de bosser en reprenant tous vos conseils.

Merci en tout cas, je vous tiens au courant et suis sûr que bientôt je pourrais moi aussi poster un RESOLU dans mon sujet

Merci à tous.
La p'tiote Smiley smile
Me revoilà

J'ai donc dans ma feuille de style (en suivant la syntaxe de GuizBizet) :


BODY {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: black; PADDING-TOP: 

0px; FONT-FAMILY: verdana, arial, sans-serif
}
DL.menu1 {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 155px; LIST-STYLE-TYPE: none
}
DT.menu1 {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 3px; MARGIN: 35px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DD.menu1 {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
UL.menu1 {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
LI.menu1 {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#menu1 {
LEFT: 0px; WIDTH: 10.8em; POSITION: absolute; TOP: 1em
}
#menu1 DT {
FONT-WEIGHT: bold; BACKGROUND: #9CA9D1; MARGIN-LEFT: 0px ; PADDING-LEFT: 4px; CURSOR: pointer; LINE-HEIGHT: 13px; 

HEIGHT: 19px; TEXT-ALIGN: center
}
#menu1 DD {
MARGIN-TOP: -4.5em; Z-INDEX: 100; BACKGROUND: #CFD6E9; LEFT: 95px; WIDTH: 10.8em; POSITION: absolute
}
#menu1 UL {
PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; PADDING-TOP: 2px
}
#menu1 LI {
FONT-SIZE: 10px; LINE-HEIGHT: 14px; HEIGHT: 20px; TEXT-ALIGN: left
}
#menu1 LI A {
DISPLAY: block; COLOR: #000; TEXT-DECORATION: none
}
#menu1 DT A {
DISPLAY: block; COLOR: #000; TEXT-DECORATION: none
}
#menu1 LI A:hover {
TEXT-DECORATION: none
}



(je m'occuperais de mon body pour le simplifier après, quand il me restera plus que cela ...)


et dans ma page htm (le javascript est bien sur dans le head) :


<!-- Menu -->
<DL id="menu1"> 
<DT onmouseover="javascript:montre('smenu1');"><A href="#">Courses &<br>
déplacements</A> </DT>
<DD id=smenu1 onmouseover="javascript:montre('smenu1');" 
onmouseout=javascript:montre();> 
<UL>
<LI><A href="#">- Courses nationnales</A> </LI>
<LI><A href="#">- Courses dans la région</A> </LI>
<LI><A href="#">- Calendrier</A> </LI>
<LI><A href="#">- Résultats</A> </LI>
<LI><A href="#">- Déplacements</A> </LI>
<LI><A href="#">- Déplacements</A> </LI>
</UL>
</DD>
<DT onmouseover="javascript:montre('smenu1');" 
onmouseout=javascript:montre();>Clubs & collectivités</DT>
<DD id=smenu1 onmouseover="javascript:montre('smenu1');" 
onmouseout=javascript:montre();> 
<UL>
<LI><A href="#">- Liste des clubs</A> </LI>
<LI><A href="#">- Partenaires</A> </LI>
</UL>
</DD>
<DT onmouseover="javascript:montre('smenu1');" 
onmouseout=javascript:montre();>Conseils<br>
& santé</DT>
<DD id=smenu1 onmouseover="javascript:montre('smenu1');" 
onmouseout=javascript:montre();> 
<UL>
<LI><A href="#">- Fiche 1</A> </LI>
<LI><A href="#">- Fiche 2</A> </LI>
<LI><A href="#">- Fiche 3</A> </LI>
<LI><A href="#">- Fiche 4</A> </LI>
<LI><A href="#">- Fiche 5</A> </LI>
<LI><A href="#">- Fiche 6</A> </LI>
<LI><A href="#">- Les fiches techniques</A> </LI>
</UL>
</DD>
<DT>Contactez<br>
nous</DT>
</DL>


J'ai évitée (je pense la Classite aïgue)
Mais le résultat est pas sympa, c'est tout entremélé, certains ont des puces, d'autres non. les sous menus sont bloqués ouverts.
Même les positionnements on changés alors que je n'y ai pas touché.

Bref c'est une vrai galère. si vous voulez jeter un oeil http://www.aliane.fr/test/css3/pffff.htm
Je commence à désesperer Smiley decu

Mon sujet est loin d'être résolu et si je le laisse parfois quelque temps c'est parce que je travaille à côté pour mes clients (donc RV, mises à jour de sites ....) J'essaye de me former toute seule dans mon coin sur les css dés que j'ai une seconde de libre mais c'est loin d'être évident.
Je viens de recevoir aujourd'hui mon bouquin sur les css de Meyer.

Le projet que je soumets ci dessus est une maquette que je dois faire pour un client.
Plutôt que de le faire en classique (avec tableau) j'aimerai le faire en css. Le menu est la partie la plus compliquée (je pense) mais si je n'y arrives pas, je vais devoir retourner à mes tableau car le projet va tout de même devoir sortir.

Voilà !
Administrateur
Aaaaargh mais pourquoi as-tu créé un nouveau post, juste pour remettre ton code ?!?!
Il suffisait d'éditer l'autre post Smiley decu

EDIT : bon, je me permets de supprimer ton post précédent, devenu inutile.
Modifié par Raphael (15 Mar 2005 - 16:13)