28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous.

Alors voila, j'ai un problème de conteneur. J'aimerais créer un div qui contient lui même d'autres éléments (div, ul, img) dont la hauteur s'adapte à la taille de son contenu.

Le code html ressemble à qqch comme:


<div id="principal">
 <img .... />
 <div id="infos">
  ......
 </div>
 <div id="resume">
 ......
 </div>
 <ul id="boutons">
  <li>..... 
  etc..
</div>


Le problème est que, en CSS, malgré bcp d'essais, je n'arrive jamais à dire au div principal de se comporter comme un conteneur englobant tout ce qu'il contient, et dont la taille s'adapte donc au contenu (au niveau de la hauteur en tout cas, la largeur étant tjrs la même...)

Si quelqu'un pouvait m'auiguiller, ce serait super ^^

J'ai déja fait des recherches sur le forum, mais sans bcp de succès.

Merci d'avance!
Modifié par selenite (23 Aug 2006 - 13:57)
Bonjour à toi

Il faudrait que tu poste le code CSS correspondant au code html pour qu'on puisse identifier le problème.

Par défaut, la hauteur d'un bloc est toujours déterminée par son contenu Smiley cligne

Seule une modification du flux normal de la page peut rompre cette règle : positionnement flottant ou absolu d'un bloc principalement.
Bonjour selenite et bienvenue parmi nous Smiley smile

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que le lien qui apparaît en bandeau tout en haut du forum ("Nouveau sur le forum ?...") est important. Il contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.
Il serait courtois de ta part de bien vouloir en prendre connaissance.

Bonne continuation Smiley smile

upload/1-code.gif
mpop a écrit :
Bonjour selenite et bienvenue parmi nous Smiley smile

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).


Bonjour ^^

Désolé, j'avais vu que les codes s'affichaient comme ça dans les messages, mais j'ai posté en vitesse, en fin de journée au boulot, et je ne trouvais pas l'option d'affichage des codes.. voila, maintenant, je connais^^

Merci du chaleureux accueil en tout cas, ça donne envie de rester Smiley cligne

Bon alors voici mon code, pour un peu clarifier les choses Smiley biggrin

html:


	<div class="principal">
		<img src="images/couvertures/<?php  echo($image) ?> " />
		<div id="titre">	
			<?php
				 echo($titre_livre." - ".$auteur);
			?>
		</div>
		<div id="infos"> 
			<p id="resume"> 
				<?php
					  echo($info);
				?>
			</p>

<!-- remplacer # courriel auteur par mail.php -->
			<p> Une question, une information à demander à l'auteur?<br /> Envoyez-lui un <a href="#">courriel </a>. <span class="gras">Attention, respect de la vie privée:</span> <br />votre question et la réponse de l'auteur seront visibles sur le site. <br /><a href="#">Voir le forum</a> des sujets existants pour ce livre</p>
			<p>PRIX: <?php  echo($prix) ?> EUR<br />ISBN: <?php  echo($isbn) ?><br />EAN:</p><br />
			<ul id="boutons">
				<li><a href="#" onmouseover= "roll(bouton_intro,3)" onmouseout= "roll(bouton_intro,4)"><img src="images/bouton_intro.gif" id="bouton_intro"></a></li>
				<li><a href="#" onmouseover= "roll(bouton_pages,5)" onmouseout= "roll(bouton_pages,6)"><img src="images/bouton_pages.gif" id="bouton_pages"></a></li>
				<li id="audio"><a href="#" onmouseover= "roll(bouton_audio,7)" onmouseout= "roll(bouton_audio,8)"><img src="images/bouton_audio.gif" id="bouton_audio"></a></li>
			</ul>
			<div id="panier">
				<a href="#"><img src="images/panier.gif"></a><a href="#" id="ajouter" onmouseover="roll(bouton_panier,9)" onmouseout="roll(bouton_panier,10)"><img src="images/bouton_panier.gif" id="bouton_panier"></a><span id="quantite">quantité: 1</span>
			</div>
		</div>
	</div>
	


css

#titre{
	height: 19px; width: 582px;
	font-weight: bold;
	background: url(../images/fond_titre.jpg) no-repeat;
	padding: 13px 0 0 5px; margin: 0;
	position: absolute; left: 170px; top: 0px;}

.principal{
	position: relative;
	width: 755px;
	height: 280px;
	margin: 0 0 0 25px;}
	
#infos{
	border: 1px solid gray;
	position: absolute;
	left: 170px; top: 38px;
	width: 570px;}
	
#infos a{
	text-decoration: underline;
	color: #C22910;}

#resume{
	font-style: italic;
	text-indent: 20px;}
	
#boutons li{
	list-style: none;
	float: left;
	margin: 0; padding: 0;}
	
#boutons{
	margin: 0; padding: 0;
	}
	
#audio{
	display: none;}
	
#panier{
	margin: 0; padding: 0;
	position: absolute;
	bottom: 40px;
	left: 140px;}

#ajouter{
	position: relative;
	bottom: 9px;}
	
#quantite{
	font-weight: bold;
	position: relative;
	bottom: 14px;
	left: 10px;}


apparament le pb serait que j'ai trop d'éléments positionnés en absolu? Je comprends bien que le positionnement absolu a un effet "isolant" (les autres éléments ne le repère plus et l'ignore, ce qui peut créer des débordements), mais là, tous mes positionnements en absolu sont qd même fait par rapport au div parent, cad le div principal.. donc ça ne devrait pas déborder.. Smiley rolleyes
Modifié par selenite (22 Aug 2006 - 08:39)
Je suis de totue façon obliger d'utiliser le positionnement absolu dans mon div "principal" afin de positionner les éléments comme je veux Smiley ohwell

helppppppp

lol^^
Non tu n'es absolument pas obligé d'utiliser un positionnement absolu pour ton bloc #info. Laisse le dans le flux de page et tu aura ce que tu veux.
MrPatate a écrit :
Non tu n'es absolument pas obligé d'utiliser un positionnement absolu pour ton bloc #info. Laisse le dans le flux de page et tu aura ce que tu veux.


Si je le laisse dans le flux normal, mon div info en se positionen pas bien Smiley ohwell
Il se place juste en dessous de l'image. Je voudrais qu'il se positionne à sa droite...
merci qd même de ta réponse^^
Alors fait l'inverse, positionne l'image en absolu (en haut à gauche je présume) et laisse #info dans le flux de page, avec un margin-left de la largeur de l'image.
MrPatate a écrit :
Alors fait l'inverse, positionne l'image en absolu (en haut à gauche je présume) et laisse #info dans le flux de page, avec un margin-left de la largeur de l'image.


Yes merciiiiiiii, ça marche Smiley lol
C'est juste bizare pcq je place l'image en positionnement absolu, mais je ne la déplace pas.. elle est au bon endroit dans le flux normal, mais le positionnement absolu sert juste à ce que mon bloque info ignore la position de l'image, ce qui lui permet de remonter...

thanks mr patate Smiley cligne
Modifié par selenite (22 Aug 2006 - 14:05)
argh j'ai crié victoire trop vite, le comportement dans internet explorer forie completement Smiley ohwell et ça apse dans firefox..


explorer ne veut rien entendre pour un margin top sur mon "info", aucune réaction.. Smiley ohwell et dans firefox cela fonctionne.. enfin ça doit être une bêtise qui bloque lol
Modifié par selenite (22 Aug 2006 - 14:22)
ton lien m'a l'air intéressant, merci ^^
mais j'ai réglé le problème en utilisant un padding plutot qu'un margin, ça fonctionne Smiley smile