28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous !

Je suis en train de développer une interface et je coince sur un point. Je n'ai trouvé aucune réponse à mon problème pour l'instant.

Je souhaiterais faire 4 colonnes de même hauteur, tout marche bien sous IE 6 et 7 mais sous Firefox, les colonnes sans contenu (juste un background qui se répète) sont invisibles. Ce sont les div col_1 et col_4 qui me posent problème.
Lorsque je met un contenu dans ces deux div tout se passe bien mais justement ils doivent être vides...

Voici le code HTML :


<!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=iso-8859-1" />
<title>Interface Arte</title>
<link href="styles/style_principal.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="fond_bois"></div>
<div id="bloc_principal">
<!-- ////////////////////////////////////////////////////////////////****************************** -->
<div id="bloc_icones">
<span><img src="images/interface_principale/arte_coiffure_accueil.gif" /></span><span><img src="images/interface_principale/arte_coiffure_contact.gif" /></span><span><img src="images/interface_principale/arte_coiffure_plan.gif" /></span></div>
<!-- //////////////////////////////////////////////////////////////// -->
<div id="bloc_logo_flash"><span><img src="images/interface_principale/arte_coiffure_01.jpg" /></span><span><img src="images/interface_principale/arte_coiffure_02.jpg" /></span></div>
<!-- //////////////////////////////////////////////////////////////// -->
<div id="bloc_3"></div>
<!-- //////////////////////////////////////////////////////////////// -->
<div id="bloc_4"><div id="col_1"></div><div id="col_2">Test</div><div id="col_3">Test2</div><div id="col_4"></div></div>
<!-- ////////////////////////////////////////////////////////////////****************************** -->
</div>
</body>
</html>

et le CSS correspondant :

html {font-size: 100%;}
body {margin:0; padding:0; background-image:url(../images/arte_background.gif); font-size: 1em; font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif;}
/************************************************************************************************************/
/*Mise en page fond******************************************************************************************/
/************************************************************************************************************/
#fond_bois { position:absolute; left:0px; top:55px; height:443px; width:100%; background-image:url(../images/interface_principale/arte_fond_bois.jpg); background-repeat:repeat-x; }

/************************************************************************************************************/
/*Mise en page principale************************************************************************************/
/************************************************************************************************************/
#bloc_principal { position:relative; width:918px; margin-left:auto; margin-right:auto; /*border:#00FF00 1px solid;*/}

#bloc_icones { padding-top:8px; width:100%; text-align:right;}

#bloc_logo_flash { width:100%; height:208px; /*border:#00FF00 1px solid;*/}

#bloc_3 { width:918px; height:20px; background-image:url(../images/interface_principale/arte_coiffure_03.jpg); background-repeat:repeat-y;/*border:#00FF00 1px solid;*/}

#bloc_4 { width:918px; /*border:#0000FF 1px solid;*/}

#col_1 { float:left; width:17px; height:100%; background-image:url(../images/interface_principale/arte_coiffure_04.jpg); background-repeat:repeat-y;}
#col_2 { float:left; width:246px; height:100%; background-color:#00FF00;}
#col_3 { float:left; width:639px; height:100%; background-color:#FF9900;}
#col_4 { float:left; width:16px; height:100%; background-image:url(../images/interface_principale/arte_coiffure_05.jpg); background-repeat:repeat-y;}


La page est disponible à l'adresse suivante : http://perso.euphonia-design.fr/interface.html

Merci d'avance pour votre aide ! Smiley cligne
Modifié par Spacedementia (22 Dec 2006 - 18:59)
Bonjour,

Pour FF il faudrait utiliser min-height: 100% et un petit tag pour IE du style

#colonne{
height: 100%;/* pour IE*/


}

html>body #colonne {
   min-height: 100%;/* pour FF*/
}


Enfin essaye !
Merci pour ta réponse.

J'avais déjà testé le min-height mais ca ne change rien pour FF.(Lorsque j'indique une auteur en pixel et non en %, cela marche)

Aurais tu une autre idée?

Merci.
Modifié par Spacedementia (22 Dec 2006 - 16:25)
Merci pour les liens.

J'ai testé en mettant la position des div en abolute.
Le problème reste le même sous FF si on indique pas de hauteur, les div sont invisibles...

Si je met une hauteur de 100% je ne comprend pas mais mon div col_1 et 4 sortent de leur conteneur. (div avec contour violet)

Apparemment firefox demande un contenu pour afficher le div et justement mes div col_1 et col_2 ne vont pas contenir de texte ou quoi que ce soit d'autre.
Modifié par Spacedementia (22 Dec 2006 - 17:18)
Re,

Je n'ai pas tout tester mais peut être que l'idée est là, normalement c'est calé pour FF, pour IE, il faudrait le petit tag en plus ...
html body {font-size: 100%;height:100%}
body {margin:0; padding:0; background-image:url(../images/arte_background.gif); font-size: 1em; font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif;}
/************************************************************************************************************/
/*Mise en page fond******************************************************************************************/
/************************************************************************************************************/
#fond_bois { position: relative; 
min-height:100%;
 width:100%; background-image:url(../images/interface_principale/arte_fond_bois.jpg); background-repeat:repeat-x; }

/************************************************************************************************************/
/*Mise en page principale************************************************************************************/
/************************************************************************************************************/
#bloc_principal { 
border: 1px solid black;
position:relative; width:918px; margin-left:auto; margin-right:auto; /*border:#00FF00 1px solid;*/}

#bloc_icones { padding-top:8px; width:100%; text-align:right;}

#bloc_logo_flash { width:100%; height:208px; /*border:#00FF00 1px solid;*/}

#bloc_3 { width:918px; height:20px; background-image:url(../images/interface_principale/arte_coiffure_03.jpg); background-repeat:repeat-y;/*border:#00FF00 1px solid;*/}

#bloc_4 { width:918px; border:#0000FF 1px solid;}

#col_1 { position:absolute; left:0px; width:17px; min-height:100%; background-image:url(../images/interface_principale/arte_coiffure_04.jpg); background-repeat:repeat-y; border:#FF00FF 1px solid;}
#col_2 { position:absolute; left:17px; width:246px; background-color:#00FF00;
min-height:100%;
}
#col_3 { position:absolute; left:263px; width:639px; background-color:#FF9900;
min-height:100%;
}
#col_4 { position:absolute; left:902px; width:16px; min-height:100%; background-image:url(../images/interface_principale/arte_coiffure_05.jpg); background-repeat:repeat-y; border:#FF00FF 1px solid;}
</style>
[code]
Merci pour ta réponse.
J'ai aussi utilisé cette méthode avant mais le résultat pose problème car la hauteur des colonnes n'est pas fonction du contenu (dans mon cas).

J'ai bidouiller et trouvé une solution qui passe sur tous les nav et qui étire les div en fonction du contenu. Avec un div parent comprenant un background de la longueur de toute l'interface.




html {font-size: 100%;}
body {margin:0; padding:0; background-image:url(../images/arte_background.gif); font-size: 1em; font-weight:normal; font-family:Verdana, Arial, Helvetica, sans-serif;}
/************************************************************************************************************/
/*Mise en page fond******************************************************************************************/
/************************************************************************************************************/
#fond_bois { position:absolute; left:0px; top:55px; height:443px; width:100%; background-image:url(../images/interface_principale/arte_fond_bois.jpg); background-repeat:repeat-x; }

/************************************************************************************************************/
/*Mise en page principale************************************************************************************/
/************************************************************************************************************/
#bloc_principal { position:relative; width:918px; margin-left:auto; margin-right:auto; /*border:#00FF00 1px solid;*/}

#bloc_icones { padding-top:8px; width:100%; text-align:right;}

#bloc_logo_flash { width:100%; height:208px; /*border:#00FF00 1px solid;*/}

#bloc_3 { width:918px; height:20px; background-image:url(../images/interface_principale/arte_coiffure_03.png); background-repeat:repeat-y;/*border:#00FF00 1px solid;*/}

#bloc_4 { display:table; width:918px; /*border:#0000FF 1px solid;*/ background-image:url(../images/interface_principale/arte_coiffure_11.png); background-repeat:repeat-y;}

#col_1 { display:table-cell; margin-left:17px; width:246px; float:left;}
#col_2 { display:table-cell; margin-left:263px; width:639px; float:left;}


<!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=iso-8859-1" />
<title>Interface Arte</title>
<!--[if lte IE 6]>
<link href="styles/style_principal_IE6.css" rel="stylesheet" type="text/css" />
<![endif]-->
<link href="styles/style_principal2.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="fond_bois"></div>
<div id="bloc_principal">
<!-- ////////////////////////////////////////////////////////////////****************************** -->
<div id="bloc_icones">
<span><img src="images/interface_principale/arte_coiffure_accueil.gif" /></span><span><img src="images/interface_principale/arte_coiffure_contact.gif" /></span><span><img src="images/interface_principale/arte_coiffure_plan.gif" /></span></div>
<!-- //////////////////////////////////////////////////////////////// -->
<div id="bloc_logo_flash"><span><img src="images/interface_principale/arte_coiffure_01.jpg" /></span><span><img src="images/interface_principale/arte_coiffure_02.jpg" /></span></div>
<!-- //////////////////////////////////////////////////////////////// -->
<div id="bloc_3"></div>
<!-- //////////////////////////////////////////////////////////////// -->
<div id="bloc_4"><div id="col_1">Test</div><div id="col_2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus malesuada congue magna. Proin et urna at elit elementum sollicitudin. Pellentesque ipsum. Mauris nunc urna, condimentum nec, lacinia ut, mollis vitae, sem. Nulla pretium nisi eget felis. Duis libero sapien, iaculis ut, lacinia eget, nonummy malesuada, lectus. Vivamus non mi. Fusce et massa eu diam consectetuer semper. Mauris suscipit accumsan lacus. Praesent tristique, risus vitae pellentesque fermentum, est mi bibendum augue, sit amet sodales metus massa tempor lacus. Vestibulum arcu. Fusce pretium enim at lacus. Donec id risus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus et velit non libero rhoncus varius. In justo est, sodales non, mattis eu, suscipit nec, ante. Mauris enim. Pellentesque nec erat vel urna cursus congue. Phasellus tincidunt, nulla ac lobortis laoreet, elit odio consectetuer sapien, quis tincidunt sapien dui sit amet nunc. Nulla facilisi. Suspendisse potenti. Aliquam non magna. Proin viverra massa. Etiam hendrerit laoreet metus. Vestibulum sit amet tellus ut neque nonummy pulvinar. Vivamus accumsan ligula vel nisl. Duis ornare ligula eget mi. </div></div>
<!-- ////////////////////////////////////////////////////////////////****************************** -->
</div>
</body>
</html>


Merci à tous les deux pour vos réponses. Smiley cligne
Modifié par Spacedementia (22 Dec 2006 - 19:01)
Spacedementia a écrit :
Apparemment firefox demande un contenu pour afficher le div et justement mes div col_1 et col_2 ne vont pas contenir de texte ou quoi que ce soit d'autre.

S'ils n'auront aucun contenu, ils n'ont aucune raison d'exister. Le design voulu est très probablement réalisable sans utiliser cet artifice par ailleurs bien difficile à manier...

Quant aux blocs en positionnement absolu... pas étonnant que les conteneurs ne s'agrandissent pas, c'est le principe même du positionnement absolu ! Smiley rolleyes
Ok, je commence à comprendre tout doucement, les différents types de positionnement! C'est une logique à prendre... Mais ça va venir!
C'est vrai en positionnement absolu le bloc sort du flux, autant pour moi.
Je voulais faire les choses trop bien, ca m'apprendra ! Smiley cligne

Le résultat sera disponible quelques jours à cette adresse :
http://perso.euphonia-design.fr/interface.html

Encore merci pour vos réponses !

Bonne fêtes à tous! Smiley biggrin

PS : Les mémento CSS et XHTML sont vraiment super bien conçus ! Je les conseils vivement ! Chapeau à Raphaël Goetter.
Modifié par Spacedementia (23 Dec 2006 - 12:25)
Une dernière chose : tu as pour l'instant un gros problème d'optimisation des images. Plus de 300 Ko d'images, avec en particulier deux images de 150+ Ko, c'est beaucoup trop. C'est un peu lent à charger sur une connexion ADSL, alors sur du bas débit, c'est catastrophique... (et puis tout ça risque de faire grimper les coûts de bande passante, même si ce n'est pas forcément un site destiné à de grandes audiences).

L'objectif à poursuivre, pour ce genre de design très graphique, devrait se situer un petit peu en dessous de 100 Ko d'images. Il va falloir optimiser tout ça. Smiley cligne
Très bien je te remercie pour ton conseil, c'est vrai que je n'ai pas particulièrement pensé à compressé tout ça, comme j'ai du haut débit ça charge rapidement. Ca sera fait pour la version finale. Smiley cligne