28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

J'ai un petit problème de taille de conteneur. J'ai deux éléments (<article> et <aside>) contenus dans une div. Mon article est à gauche, la sidebar à droite, et la div générale a un fond de couleur. Le problème est qu'il arrive, quand mon aside est trop long, que le contenu déborde du fond blanc de ma div, qui prend automatiquement la taille de mon <article>. Comment faire pour m'assurer que la div générale s'étale suffisament pour faire entrer ses deux contenus ?

Voici le détail du code.

	<div id="content">
		
		<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
		
			<article id="post-<?php the_ID(); ?>">

				<h1><?php the_title(); ?></h1>
				
				<div class="post_content">
						<?php the_content(); ?>
				</div>
				
			</article>
			
			<?php get_sidebar(); ?>


La sidebar est au format <aside> <ul> et <li>. Classique.

Et voici le CSS, que vous allez sans doute trouver un peu bordélique Smiley confused .

#content {
	border-radius: 5px;
	clear: both;
	width: 80%;
	margin: 20px auto;
	padding: 20px;
	background: rgba(255, 255, 255, 0.8);
}
aside {
	display: inline-block;
	margin-bottom: 50px;
	margin-left: 2%;
	position: absolute;
}
article {
	display: inline-block;
	width: 65%;
	border-right: 1px solid #b8a5b8;
	padding-right: 10px;
}


Vais-je me faire fustiger pour ne pas utiliser les flottants ? J'ai essayé plusieurs combinaisons de float et margin, et je n'arrive pas à régler le problème. D'autant que je ne sais pas à l'avance lequel de mon <article> ou de mon <aside> sera le plus long... Je veux juste que #content prenne la taille qu'il faut !

Merci d'avance de votre aide.

Tan
Salut Smiley cligne
essaie de mettre aside et article en float:left;

Et rajoute une div vide au meme niveau avec la proriété clear:both;
Normalement cette div devrait remettre le flux dans son état normal .

Je dit ça rapidement, dit moi ce que ça donne Smiley cligne
Modifié par rif5 (05 Apr 2015 - 10:10)
Bonjour,
tout simplement car tu met ton aside en position absolute (ce qu'il faudrait éviter autant que possible) et que par conséquent, c'est un bloc sortir du flux normal qui ne peut avoir un impact sur la taille de son conteneur.
rif5 a écrit :
Salut Smiley cligne
essaie de mettre aside et article en float:left;

Et rajoute une div vide au meme niveau avec la proriété clear:both;
Normalement cette div devrait remettre le flux dans son état normal .

Je dit ça rapidement, dit moi ce que ça donne Smiley cligne


Le clearing via une div vide, c'est un peu dépassé comme méthode.
Mieux vaut utiliser ce clearfix http://nicolasgallagher.com/micro-clearfix-hack/ Smiley cligne

D'autre part il n'a pas besoin de rendre flottant la div article sauf si celle-ci doit être placé en premier dans le HTML. Un float:right sur le aside placé en premier dans le code et un overflow:hidden sur article suffisent et ça évite de dimensionner article.

S'il n'y a pas de gouttière entre les 2 blocs, et pour conserver la cohérence HTML/rendu visuelle,
le plus intéressant est de passer par du table-cell.
Modifié par Hermann (05 Apr 2015 - 11:24)
Merci de vos réponses.

Hermann, lorsque je retire le position: absolute; de mon aside, ça s'améliore, en effet. Le #content prend bien la taille du aside. Par contre, l'article, qui est à gauche, se retrouve en bas du bloc #content, alors que je le préférerai en haut.

http://www.zimagez.com/miniature/screenshot-06042015-155942.php

J'essaie d'appliquer deux ou trois autres choses pour régler ça mais pour l'instant je n'y arrive pas...

Merci de votre aide.
Salut , essaie avec un vertical-align:top

Merci pour le lien du clearfix hermann, c est vrais que j ai l habitude d utiliser la technique de la div vide, mais effectivement il y a sûrement d autre technique plus "propre"
tanpalomino a écrit :
Merci de vos réponses.

Hermann, lorsque je retire le position: absolute; de mon aside, ça s'améliore, en effet. Le #content prend bien la taille du aside. Par contre, l'article, qui est à gauche, se retrouve en bas du bloc #content, alors que je le préférerai en haut.

http://www.zimagez.com/miniature/screenshot-06042015-155942.php

J'essaie d'appliquer deux ou trois autres choses pour régler ça mais pour l'instant je n'y arrive pas...


Même réponse que Rif5, tu dois ajouter un vertical-align:top car la valeur par défaut est baseline. Un élément inline-block se comporte comme un élément inline à ce niveau là...
Modifié par Hermann (06 Apr 2015 - 16:16)