28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Si je poste, c'est que depuis plusieurs jours j'essaye tant bien que mal de faire un positionnement de box assez complexe sans succès.

Voici l'architecture du CSS (Fait sous paint, no comment xD):
http://alpha.chuck-france.net/designArchiCSS.JPG

Donc mon problème réel se situe au niveau des box à l'intérieur, et plus particulièrement avec les small_box left et right.
Le but est de pouvoir faire plusieurs "étages" de box: Exemple ici deux étages avec une big box et 3 small box a coté pour le premier et deux small box a gauche avec une big box a droite pour le deuxième étage.

Le but est que chaque étage pousse vers le bas l'étage du dessous. C'est à dire que si les trois small box du premier étage dépassent la big box, elles doivent pousser l'étage du dessous (2 small_box_left et big_box_right).
Et impossible d'obtenir cela !

Voici mon CSS:

body {
 margin: 0;
 padding: 0;
}

#conteneur {
 background-image: url('body_background.jpg');
 background-repeat: repeat-y;
 font-family: Arial;
 font-size: 12px;
 color: #598089;
 margin: 0 auto;
 padding: 0;
 top: 0;
 bottom: 0;
 width: 955px;
 position: relative;
}

#header {
 background-image: url('header.jpg');
 background-repeat: no-repeat;
 height: 257px;
 width: auto;
}

#footer {
 background-image: url('footer.jpg');
 background-repeat: no-repeat;
 height: 103px;
 width: auto;
}
#content { /* #########" MIDDLE sur le schéma ########### */
 position: relative;
 width: 903px;
}
#centre {
 position: absolute;
 margin-left: 245px;
 width: 658px;
 top: 0;
}

/* #########" BOXES ########### */
.box_conteneur {
  position: relative;
  width: 658px;
  border: 1px dashed green;
}

.big_left_box {
  left: 0px;
  position: relative;
  width: 460px;

}
.big_right_box {
  margin-left: 190px;
  right: 0px;
  position: relative;
  width: 460px;

}

.small_left_box {
  left: 0px;
  position: absolute;
  width: 180px;
}
.small_right_box {
  position: absolute;
  right: 5px;
  top: 0px;
  width: 180px;
}



Entre temps, j'ai rajouté la div centre qui englobe toutes les div du milieu sans le menu et la classe box_conteneur qui englobe un "étage" de box.

Voici le code HTML:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
 <head>
	<title></title>
	<style type='text/css'>
	@import url('styles.css');
	</style>
 </head>
 <body>
	<div id='conteneur'>

	   <div id='header'>
	   </div>

	   <div id='content'>

	   	  <div id='menu'>
<br /><br />

		</div>

		<div id='centre'>

		   <div class='box_conteneur'>

			   	<div class='big_left_box'>
				 
				</div>

				<div class='small_right_box'>
					
				</div>

				<div class='small_right_box'>
					
				</div>
				<div class='small_right_box'>
					
				</div>

			</div>
			<div class='box_conteneur'>

				<div class='big_right_box'>

				</div>
				<div class='small_left_box'>

				</div>
			
				<div class='small_left_box'>
					
				</div>

			</div>
	

		</div>

	   </div>
	   <div id='footer'>

	   </div>
	</div>
 </body>
</html>


Voilà, j'espère avoir été assez clair, n'hésitez pas si vous avez des questions. Mon problème est uniquement le positionnement de ces box du milieu: Soit elles ne poussent pas le bas, soit elles ne se placent pas où il faut a coté de la big_box.

En espérant que vos lumières puissent m'éclairer, bonne journée. Smiley smile
Modifié par DrDJo (22 Jul 2007 - 19:30)
Bonjour,

Ce que je ferais si j'étais toi c'est :

un div qui contient :

big_box_left et les small_box_right

cette div tu lui mets en CSS : overflow:auto;

et les small_box_right tu les mets dans un div miniconteneur, ce div sera déclaré dans le html avant big_box_left
et ce miniconteneur tu lui mets la propriété CSS : float:right

et tu fais la même chose pour la partie du bas ..ca devrait réagir comme tu le souhaites je n'ai pas testé mais j'aurais commencé comme ça Smiley cligne
Salut,

Donc j'ai essayé de faire ce que tu m'as dit et j'obtiens ça:

http://alpha.chuck-france.net/designArchiCSS3.JPG

J'ai une scroll horizontale qui apparait sous FF et deux scroll sous IE une horisontale et une verticale.

VOici le code HTML:

<div id='centre'>
				
				<div class='block_conteneur'>
					<div class='small_right_box'>
						<img class='title_box' src='titres/diffusions.jpg' title='' alt='Diffusion' />
						<p class='content_box'>blaaaaa<br />sdsdsd<br />sdsdsdfs<br />sdsdsfdsf</p><br />
						<img class='title_box' src='titres/sondages.jpg' title='Les sondages' alt='Sondages' />
						<p class='content_box'>blaaaaa<br />sdsdsd<br />sdsdsdfs<br />sdsdsfdsf<br />dsfdfdsfdssss sssssssssss ssssssssssssss</p><br />
						<img class='title_box' src='titres/partenaires.jpg' title='Les Partenaires' alt='Partenaires' />
						<p class='content_box'>blaaaaa<br />sdsdsd<br />sdsdsdfs<br />sdsdsfdsf<br />dsfdfdsfdssss sssssssssssssss sssssssssssss</p><br />
					</div>	
					<div class='big_left_box'>
					   	<img class='title_box' src='titres/actualites.jpg' title='Les actualit&eacute;s' alt='Actualit&eacute;s' />
						<p class='content_box'>
						   <br /><br /><br /><br />
						</p>
					</div>
				</div>
				
				
		   </div>
		   <!-- FIN CENTRE -->


la div centre correspond à ce qui a au milieu
la div block_conteneur est celle qui contient les box
la div small_right_box est la box en float contenant les autres right_box que j'ai représenté avec la balise p.content_box


VOici le CSS pour mieux comprendre:


#centre {
	border: 1px dashed #c0c0c0;
	position: relative;
	width: 670px;
	margin-left: 230px;
}

/* #########" BOXES ########### */
.block_conteneur {
  width: 670px;
  overflow: auto;
}

.big_left_box {
  left: 0px;
  position: relative;
  width: 465px;

}

p.content_box {
  -moz-border-radius:8px;
  background-color: #aedbe6;
  padding: 5px;
}

.small_right_box {
  float: right;
  width: 180px;
}

.small_right_box img.title_box {
  right: 20px;
}


Voilà, j'espère que quelqu'un connait la solution Smiley smile
J'ai résolu le problème en mettant un margin-right à ma small_right_box, j'ai mis 2px et plus de scrollbar Smiley smile

Meric pour votre aide Smiley smile
Modifié par DrDJo (22 Jul 2007 - 19:31)