28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

Je sais que ce problème à été posé maintes fois et qu'il y a de nombreuses réponses sur le net, mais j'ai beau avoir tout essayé mon div ne veux toujours pas prendre toute la hauteur, mon projet web arrive à son terme et je suis dégouté à cause de ce problème je ne peut pas mettre en ligne mon site.

Voici un Schéma de la structure de mon site ( presque semblable sur toute les pages à l'exception du menu 1 qui n'est pas toujours présent ):

upload/28790-Sanstitre.png

Comme vous pouvez le voir, le menu 2 ne prend pas toute la hauteur de la page ! Cela me gène énormément car il fait parti du design avec le footer.

J'ai tout essayé mais je ne parviens pas à lui faire prendre toute la hauteur, voici le code d'une page "light" et du css associé :



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
  		...
	</head>
	<body>  
                  ?PHP inclusion HEADER ?PHP 
				<div id="contenu">
					<div id="contenu_">
						<div id="colonne_left">
							<div id="col_left_padding">
								<div class="mess_green">
									... div de texte
								</div>
								<div class="bloc">
									... div de texte
								</div>
							</div>
						</div>
						<div id="colonne_center">
					         .. MENU 1 
						</div>
						<div id="colonne_right">
						 .. MENU 2
						</div>
					</div>
				</div>

			?PHP inclusion footer ?PHP 



et voici le css "light" associé :



body{margin:0 auto;height:100%;padding:0;}
html{height:100%}


#contenu{ 
max-width:1440px;
min-width:1120px;
width:100%;
float:left;
background:url(images/bg_contenu.png) repeat-x 0 0;
min-height:100%;
} 

#contenu_{
min-width:999px;
width:85%;
margin-left:120px;
border-left:1px solid #eee;
float:left;
min-height:100%; 
}

#colonne_left{
float:left;
min-width:600px;
width:60%;
min-height:100%;
} 

#col_left_padding{
width:90%;
float:left;
margin-left:5%; 
margin-top:20px;
min-height:100%;
}

#colonne_center{
float:left;
border-left:1px solid #eee;
min-width:190px;
width:19%;
min-height:500px;
min-height:100%;
}

#colonne_right{
float:right;
min-width:190px;
width:19%;
min-height:100%;  
font-size:12px;
background:#292929;}



Pourrais-je avoir le lien de la solution javascript si cela ne vous dérange pas ?

Merci d'avance pour votre aide, je vous en serais très reconnaissant Smiley smile
Modifié par anneaunimes (12 Apr 2010 - 13:25)
Administrateur
anneaunimes a écrit :
Bonjour à tous,

Je sais que ce problème à été posé maintes fois et qu'il y a de nombreuses réponses sur le net, mais j'ai beau avoir tout essayé

Hello,

Les réponses qu'on te donnera ne pourront pas être différentes que celles proposées ici, et elles ne sont pas nombreuses :
http://www.alsacreations.com/astuce/lire/15-div-colonnes-meme-hauteur.html

Lorsque tu auras choisi ta piste, montre-nous comment tu procèdes et explique-nous ce qui te bloque.

Bonne chance.
Bonjour et merci pour les liens Smiley cligne

Donc j'ai testé une méthode qui marche plutôt pas mal même si la colonne est assez longue..C'est là méthode qui consiste à mettre un overflow:hidden au bloc parent et margin-bottom:-1000px et padding-bottom:1000px aux blocs enfants de cette facon :



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Equal Height Columns</title>
	<style type="text/css">
      #container { float: left; background: url(images/example-6.gif) bottom center no-repeat; padding-bottom: 1px; }
      #inner { float: left; overflow: hidden; }
      #inner div { float: left; background: #ccc; border: 1px solid #000; width: 200px; margin-right: 5px; margin-bottom: -1000px; padding-bottom: 1000px; }
      #inner .col2 { background: #eee; }
      #inner .col3 { margin-right: 0; }
      .clear { clear: both; padding-top: 10px; }
	</style>
</head>

<body>
	<div id="container">

	   <div id="inner">
	      <div>
	         <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ac lectus ac ligula cursus ullamcorper. Aliquam iaculis nonummy libero. Nulla nisi libero, faucibus quis, egestas non, congue vel, dolor. Nulla facilisi. Quisque non metus malesuada libero suscipit cursus. Nam eget metus. Aliquam non quam. Integer sit amet pede eu est gravida fermentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed vulputate tempus felis. Vestibulum tincidunt elit sit amet est. Sed ultricies tempus enim. Curabitur quam augue, fringilla ac, imperdiet et, dignissim sit amet, erat. Aenean ornare. Quisque turpis neque, suscipit pretium, aliquet sed, eleifend vitae, elit. Ut velit neque, venenatis non, convallis at, nonummy tincidunt, nisl. Morbi sapien.</p>
	      </div>
	      <div class="col2">
	         <p>Praesent mauris. Proin arcu. Maecenas elementum. Curabitur congue, ante ut pretium suscipit, lectus elit porttitor arcu, ac porta magna ante sit amet nulla. Suspendisse sed tellus. In eget mi in risus adipiscing lobortis. Nam lobortis ipsum quis nibh. Donec odio. Nullam fermentum, leo id condimentum viverra, augue nibh viverra dui, in placerat arcu sapien nec velit. Nunc tincidunt molestie elit. Sed est mi, posuere vitae, congue vitae, pulvinar vel, enim. Morbi vestibulum erat sed risus. Nulla facilisi.</p>
            <p>Integer nec neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent dictum venenatis velit. Morbi interdum eleifend sapien. Morbi a mauris. Nulla auctor varius elit. Mauris id nibh ac orci egestas gravida. Nam orci. Fusce dui. Nulla interdum pharetra mauris. Sed fermentum purus ac lectus. Vivamus et dui ac quam vehicula tristique. Cras sem. Integer non nisi commodo elit sagittis interdum.</p>

	      </div>
	      <div class="col3">
	         <p>Morbi feugiat metus sit amet urna. Etiam faucibus diam at mi egestas elementum. Mauris tempus, neque quis scelerisque lacinia, risus purus ornare enim, ut dignissim ante leo quis mauris. Maecenas pellentesque. Nulla magna metus, pretium et, scelerisque sed, faucibus lacinia, ante. Ut placerat. Phasellus a sapien. Donec porttitor tincidunt velit. Pellentesque eget sem. Duis ac sem ac sapien euismod consequat. Ut tortor urna, bibendum sed, fringilla sit amet, tempor quis, ipsum. Sed vehicula tempor nibh. Aliquam et nunc.</p>
            <p>Curabitur sapien risus, vulputate quis, lacinia eu, tincidunt ut, pede. Sed nec tortor eu quam interdum molestie. Sed sodales iaculis ligula. Sed non nulla vel nibh imperdiet elementum. Vestibulum augue lorem, cursus vel, faucibus vel, euismod in, sem. Sed vitae quam a dolor pulvinar cursus. Pellentesque molestie, libero sit amet auctor venenatis, velit odio condimentum elit, eu rhoncus justo risus a justo. Sed quis pede. Aliquam erat volutpat. Sed diam est, imperdiet at, convallis et, congue vel, ante.</p>
         </div>
	   </div>
	</div>
	<p class="clear">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ac lectus ac ligula cursus ullamcorper. Aliquam iaculis nonummy libero. Nulla nisi libero, faucibus quis, egestas non, congue vel, dolor. Nulla facilisi. Quisque non metus malesuada libero suscipit cursus. Nam eget metus. Aliquam non quam. Integer sit amet pede eu est gravida fermentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed vulputate tempus felis. Vestibulum tincidunt elit sit amet est. Sed ultricies tempus enim. Curabitur quam augue, fringilla ac, imperdiet et, dignissim sit amet, erat. Aenean ornare. Quisque turpis neque, suscipit pretium, aliquet sed, eleifend vitae, elit. Ut velit neque, venenatis non, convallis at, nonummy tincidunt, nisl. Morbi sapien.</p>

</body>

</html>



Mais est-ce vraiment une méthode "propre" ? Smiley ohwell

merci d'avance Smiley smile

-----------------------------------------------------------------------------------------------

2EME problème, j'ai inclu mon forum punbb dans mon site avec la même colonne à droite du forum (ici "col_droite" ) et je ne sais pas dans quel bloc parents définir mon overflow:hidden...

Lorsque je définis mon overflow dans le punwrap, je ne vois plus le haut de ma page lorsque j'écris un message et qu'il me renvoi vers http://localhost/forum/viewtopic.php?pid=4#p4 mon post que je viens décrire, plus moyen de remonter =/

La structure d'un page punbb est la suivante :




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="<pun_content_direction>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<pun_char_encoding>" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.png" />
<pun_head>
</head>
<body>

<div style="overflow:hidden" id="punwrap">
<pun_include "header.php">
<div id="pun<pun_page>" class="pun">

<div id="brdheader" class="block">
		<pun_navlinks>
		<pun_status>
</div>

<pun_announcement>

<pun_main>

<pun_footer>

</div>
	<div class="col_droite">
	<pun_include "menu_droit.php"> 
	</div>
</div>

<pun_include "footer.php">
</body>
</html>


Modifié par anneaunimes (12 Apr 2010 - 13:12)
Bonsoir anneaunimes,

Le premier bout de code n'est pas sanctionné. Aucune erreur en HTML ni en CSS auprès des validateurs. Joli carré vert en somme.

Le second exemple affiche une page blanche - Les éléments <pun etc…> n'existent pas (à ma connaissance) en html et l'attribut "dir" est sensé renseigner sur le sens de l'écriture (gauche à droite ltr ou droite à gauche rtl).
Normal le premier bout de code n'est pas de moi, c'est un exemple de mise en page que j'ai en quelques sorte 'appliqué' ou 'adapté' à mon code.

Le deuxième code est interprété par punbb, il n'à donc rien d'officiel au niveau (x)HTML et CSS en "partie".

Merci

ps: quelqu'un pourrait t-il me donner le code javascript pour adapter ma colonne à la hauteur ?