28173 sujets

CSS et mise en forme, CSS3

Voila, je me présente, Sébastien, 19 ans. Je suis actuellement en stage dans une entreprise et je dois m'occuper de mettre en forme les templates sur un blog php de type lifetype pour le customiser aux couleurs de l'entreprise, seulement j'y connais pas grand chose... J'ai passé toute la journée a chercher partout, testé differents trucs, et rien a faire Smiley decu

Voila mon probleme:

J'ai:
- Une page avec un fond gris
- Un conteneur avec une image de fond positionnée en top / np repeat
- Un header qui marche parfaitement bien, ou divers elements comme des menus / logos se placent en position relative par rapport au conteneur
- Un main divisé en 3 blocs (menu gauche , menu droit, et corps), ou se trouve le probleme!
- Un footer

Mon probleme c'est que j'ai beau chercher, je n'arrive pas a placer les blocs du main cote a cote, et voila ce que ca donne en screen:
ICI
http://img141.imageshack.us/my.php?image=screenshot4vz.jpg

Ici, on ne voit pas le footer, ni le bloc corps du bloc main, car en fait, seul le premier bloc du main est bien positionné, tous les autres se mettent automatiquement en dessous de celui-ci...

J'ai essayé diverses solutions, mais sachez que j'ai des contraintes quand meme: étant donné que je travaille sur des templates, les 3 blocs du main sont de taille variable... il m'est donc impossible d'utiliser des positions telles que top: -200px ou autre, car si un nouvel article est posté sur le blog, tout va se redécaller...

Je ne peux pas non plus vraiment utiliser de positions absolues ni de float, car la taille de mon conteneur doit dépendre du plus grand élément du bloc main, sinon l'image de background ne se déroule pas entierement, et le fond blanc ne va pas jusqu'en bas (en gros le corps du main va dépasser sur le fond blanc et se retrouver sur le background gris de la page...)


En code ca donne, en simplifé:





<div id="BLOC_PRINCIPAL">

PARTIE SUR LE HEADER: SANS PROBLEME
 

<div id="MAIN">

  
<div id="BARRE_GAUCHE">

CONTENU DE LA BARRE GAUCHE (la hauteur n'est pas fixe vu que template...)

</div>


<div id="BARRE_DROITE">
CONTENU DE LA BARRE DROITE (la hauteur n'est pas fixe vu que template...)
</div> 

<div id="CONTENU">
CONTENU DU CORPS (la hauteur n'est pas fixe vu que template...)
</div> 

</div> (main)

<div id="FOOTER">
CONTENU DE LA BARRE DROITE (la hauteur n'est pas fixe vu que template...)
</div> 

</div> (bloc principal)





Et le css:


#BLOC_PRINCIPAL {
	position:relative;
   	width:900px;
	background-image:url("./fond_formation.jpg");
	background-position:top;
	background-repeat:no-repeat;
	background-color:#FFFFFF;
	margin-left: auto;
	margin-right: auto;
	margin-top:0;
}

#MAIN {
	width:900px;
	text-align:center;
	heigth: 100%;
}

#BARRE_GAUCHE {
	position: relative;
	top:10px;
	width: 170px;
	left:15px;
	font:12px/1.5 trebuchet ms, verdana, arial, helvetica, sans-serif;
	color:#666;
	background-color:#FFFFFF;
	text-align: left;
}


#BARRE_DROITE {
	position:relative;
	left:715px;
	width: 170px;
	font:12px/1.5 trebuchet ms, verdana, arial, helvetica, sans-serif;
	color:#666;
	background-color:#FFFFFF;
	text-align: left;
	clear:both;
}

#CONTENU {
	position: relative;
	left: 210px;
	width: 480px;
	color: #333;
	text-align:center;
	background-color:#FFCCFF;
	clear:both;
}

#FOOTER {
	position:relative;
	width:900px;
	bottom:0px;
	text-align:center; 
	background-color:#00FF00;
	font:10px verdana, arial, helvetica, sans-serif;
	color:#333;
	text-transform: uppercase;
}




Voila Smiley smile

Ca doit vraiment pas etre sorcié a résoudre comme probleme, mais moi j'y arrive vraiment pas, et pourtant c'est pas faute d'avoir cherché Smiley decu je peux pas trop avancer tant que j'ai pas résolu ce probleme... donc si quelqu'un passe par la et a une ptite astuce pour m'aider...

Pour le moment j'ai trouvé une solution qui me convient moyennement:
- Etant donné que j'arrive a placer comme il faut un des elements du bloc main, je peux placer la partie du milieu qui sera considérée comme la plus longue. Les menus a gauche et a droite placés en absolute, si le corps n'est pas assez grand, ils vont dépasser de l'arriere plan blanc et aller sur le gris... En gros le probleme ne sera la que sur les blogs vides ou peu remplis (les menus + grand que le contenu), mais j'aimerai quand meme bien le regler ^^

PS: je précise que je ne souhaite avoir que des solutions aux normes xhtml / css2

Merci d'avance
Modifié par rQL (11 May 2006 - 16:30)
Hello Sébastien, bienvenue sur Alsacréations !

Bah dis-donc, c'est tout un cahier des charges ça ! Smiley lol

Pour placer trois blocs en largeur, il n'y a pas trente-six solutions. En gros, il y a la bonne solution, à savoir l'utilisation du comportement flottant, et la "mauvaise" : le positionnement absolu (je dis mauvaise car à part dans certains cas précis et maîtrisés, placer toute une tripoté de blocs en absolu est surtout source de problèmes…).

Pour les float, j'ai réalisé l'exemple suivant, ça pourrait t'aider :
http://web.covertprestige.info/test/11-page-fluide-avec-trois-colonnes-1.html
Ici, j'ai utilisé des largeurs en pixels pour les blocs des deux côtés (le bloc central n'étant pas flottant, il suffit de lui donner des marges et il prendra la largeur restante). Mais rien n'empêche d'utiliser des valeurs en pourcentages pour ces largeurs et ces marges. Il faudra juste faire attention aux border et aux padding qui pourraient agrandir les blocs (cf le modèle de boîte CSS).

Je n'ai pas bien compris pourquoi tu ne voulais pas utiliser le comportement flottant. Si c'est à cause du fait que le conteneur ne vient plus englober les éléments flottants, c'est un comportement standard qui peut se corriger sans trop de mal.
Cf. http://web.covertprestige.info/test/03-elements-flottants-et-element-parent-1.html
merci bien pour ta réponse, c'est exactement ce que je cherchais Smiley smile

bon en fait j'ai appliqué la solution du min-height avec des menus en absolute, mon boss est ok ca lui convient. Si j'ai le temps je repasserai tout en float Smiley smile

Par contre je trouve ca allucinant les differences d'interpretation entre ie et firefox... je pensais pas que c'etait si important lol. Mon site rendais tout bien sur firefox, et sur ie tout etait décallé ^^ heuresement j'ai reussi a corriger ca lol

thx et a+
rQL a écrit :
Par contre je trouve ca allucinant les differences d'interpretation entre ie et firefox...

Je trouve que, si on considère les propriétés CSS comprises par IE, le nombre de celles qui sont interprétées de travers ou qui sont sujettes à bugs est "relativement" réduit. Disons qu'on a un certain nombre de bugs ou comportements assez spectaculaire, mais une fois qu'on sait les éviter on évite pas mal de sueurs froides.
Dites j'ai un ptit probleme sans grandes conséquences, c'est juste que je veux une feuille de style sans aucun avertissement W3C, et je n'arrive pas a me débarrasser de certains d'entre eux:

* Ligne : 90 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : a
* Ligne : 95 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : a:link
* Ligne : 100 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : a:visited
* Ligne : 105 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : a:hover
* Ligne : 485 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : .POSTE_TITRE
* Ligne : 498 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : .POSTE_TEXTE
* Ligne : 505 (Level : 1) Vous n'avez pas de couleur de fond définie avec votre couleur : .POSTE_FOOTER


Le truc c'est que je ne veux pas de couleur de fond... Le background-color:transparent; n'enleve pas cette erreur Smiley decu

Enfin c'est pas tres important mais si quelqu'un a une solution ca serait cool Smiley smile thx
Salut

Les avertissements CSS W3C ne sont pas a interpréter comme des erreur, il sont juste la pour attirer ton attention sur un risque potentiel de pertes d’accessibilité qu’un système automatique ne peux pas estimer

Pour preuve si tu n’as aucune erreur mais quelques avertissements, ta page est validée

Il faut surtout vérifier que si tu agrandi tes caractères ou si tu passe en contraste élevé, la vision de ta page soit bien lisible (pas pour toi mais pour un mal voyant)

A+
Merci bien ^^ ca devrait convaincre mon boss Smiley cligne

Sinon j'ai un autre petit probleme qui n'est pas dans la faq (qui m'a quand meme été bien utile pour resoudre un ou deux autres trucs ^^)

En fait mon site doit etre le meme sous ie et firefox (normal quoi), et a un moment j'ai besoin d'avoir des liens qui changent de couleur... seulement sur IE 6 que j'ai, tout se passe bien sauf pour les changements de couleur...

#HEADER_MENU_N0_LIEN1{
padding-right:3px;
padding-top:6px;
padding-bottom:4px;
width:197px;
height:13px;
margin-top:10px;
margin-bottom:2px;
text-transform: uppercase;
font-family:Arial, Helvetica, sans-serif;
font-weight:bold;
font-size:12px;
text-align:right;
border-bottom-width: 7px;
border-bottom-color:#0099FF;
border-bottom-style:solid;
}

#HEADER_MENU_N0_LIEN1:hover {
text-decoration:underline;
color: #0099FF;
}

Voila le code que j'utilise...

D'apres cette adresse: http://perso.wanadoo.fr/coin.des.experts/reponses/faq9_23.html
C'est censé marché pour tous les navigateurs recents, dont IE a partir de la version 4...

Le probleme: moi j'ai la version 6 et ca ne marche pas avec ie... donc je me dis: soit le site se trompe, soit j'ai la seule version de ie6 qui bug avec les hover colorés ^^ Enfin bref si quelqu'un a une solution a proposer autre que l'utilisation d'images, moi je suis preneur Smiley smile

(il faut savoir que mon lien s'applique directement sur le div)
Modifié par rQL (15 May 2006 - 15:45)
rQL a écrit :
a un moment j'ai besoin d'avoir des liens qui changent de couleur... seulement sur IE 6 que j'ai, tout se passe bien sauf pour les changements de couleur...


La pseudo-classe :hover n'est implémentée par IE que pour les liens (éléments a).
c'est ce qui m'a semblé aussi, mais de toute facon c'est des liens qui doivent changer de couleur avec hover... c'est pas possible de définir des liens qui ont un comportement different avec hover ? (et que ca marche sous ie !)
Bonjour,

Bin si, justement, c'est la seule chose que sait faire IE avec :hover pour le moment. C'est ce que voulait dire mpop.
merci bien Smiley smile mais ca j'avais compris que ie arrivait a accepter le comportement hover sur les a:

mais le probleme, c'est que je veux qu'il y ait des a: differents en fonction des differents divs, cad que 2 liens ne doivent pas avoir le meme comportement hover...

j'ai essayé des a#id:hover / #id a:hover et autres, ca n'a pas encore marché :s
C'est bien ça pourtant :
#test a:hover {
      color: red;
      font-weight: bold;
      }

Fonctionne avec ce balisage :
<div id="test"><a href="#">lien test</a></div>
Tu peux également créer une classe pour les liens :
a.test:hover {
   font-size: 200%;
   }
Agira avec ce type de balisage :
<a [#orange]class="test"[/#] href="#">lien test</a>
merci bien neko, j'ai retesté, il semble que ca ne marche sur les class en fait... enfin mon cas est peu etre un peu spécial car le lien est un div en fait...

Heu sinon ta soluce m'a bien aidé mais y reste un ptit pb: sous ie le pointeur disparait et quand on passe sur le lien, il se transforme en I (comme dans une zone de saisie de texte). Bon ca je sais pas si ca va etre solvable ^^ sacré IE lol