28172 sujets

CSS et mise en forme, CSS3

Bonjour,
Voici plusieurs jours que je cherche et que je suis sans réponse.
Il y a déjà plusieurs articles disponibles sur le web qui répondent à cette question mais dans ma situation cela ne fonctionne pas.
Donc, comme le nom l'indique je souhaite que ma div s'adapte selon le contenu, qu'elle aie une min-height et qu'elle puisse s'allonger car c'est pour un site dynamique.

Voici une version simplifiée de mon problème :
http://www.takeaglitch.com/test.html


Le code html :
<body>
<div id="globale">
<div id="globale2">
<div id="content">

<div class="content_text">
<p> L O R E M I P S U M </p>

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


Le CSS
body{
margin:0;
padding:0;
background-color:#CCC;}

#globale{
width:900px;
min-height:300px;
margin:auto;
background-color:#FFF;

}

#globale2{
position:relative;
left:0px;
top:0px;
width:900px;
min-height:300px;
display:block;
height:100%;
padding:0px;
margin:0px;
}

#content{
float: left;
left: 94px;
min-height: 400px;
position: relative;
top:10px;
width: 823px;
}

.content_text{
text-align:justify;
position:absolute;
float:left;
left:20px;
top:0px;
width:500px;
min-height:400px;
clear:both;
}

p{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
font-size:12px;
color:#282828;
}


Merci d'avance pour tous ceux qui prendront le temps de lire jusqu'ici et de m'aider à trouver une solution !
Bonjour Ludw,

Quand tu nous présentes du code, c'est mieux de mettre en forme celui-ci avec [ code=html ou css ou php ] mais sans mettre les espaces. C'est plus lisible pour nous.

Pour ce qui est de ton problème, tu as mis ton div #content en flottant et donc tu te retrouves avec un dépassant des flottants.
Empêcher les flottants de dépasser

Je te mets en garde, tu as un mélange de positionnement absolue, flottant qui sont parfois inutile. Voici un article à lire:
Initiation au positionnement
Il est parfois bon de relire les bases...
Bonjour à toutes et à tous,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans nom</title>
<style>
* {
	margin				: 0;
	border				: none;
	padding				: 0;

}

body {
	background-color	: grey;
}

#globale {
	position			: absolute;
	top					: 25px;
	left				: 100px;
	width				: 900px;
	min-height			: 300px;

	background-color	: white;
}

#content {
    width				: 450px;
    min-height			: 100px;

	background-color	: yellow;
	text-align			: justify;
	margin				: 0 auto;
}
	
p {
	font-family			: "Trebuchet MS", Arial, Helvetica, sans-serif;
	font-size			: 12px;
	color				: grey;
}
</style>

</head>

<body>
<div id="globale">
	<div id="content">
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin lacinia sapien et dui iaculis aliquet.</p>

		<p>Nunc urna elit, tristique ac aliquam id, ultrices vitae erat. Duis quis dui vel purus viverra tempor. Proin adipiscing iaculis libero, ut sagittis odio consectetur at.</p>

		<p>Duis congue leo sed sem rhoncus lobortis. Phasellus non ante magna, vitae pellentesque dui. Nunc non magna sem. Suspendisse venenatis turpis id urna varius sagittis.</p>

		<p>Ut quis neque a magna sagittis gravida in eu orci. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam blandit ante ac enim condimentum ac posuere ante lobortis. Nunc vel interdum lectus. Donec nec ligula felis.</p>

		<p>Maecenas eget orci justo. Suspendisse posuere blandit nisl eget feugiat. Sed elit risus, adipiscing ut accumsan at, dictum et nunc. Nam mattis, enim at ultricies aliquet, neque ligula pulvinar tellus, vel bibendum purus nunc non felis.</p>

		<p>Suspendisse potenti. Maecenas pellentesque nunc et metus eleifend eget varius mauris blandit. Quisque interdum malesuada arcu, eget convallis ipsum malesuada at. Nulla facilisi. Vestibulum gravida laoreet tristique. Maecenas mattis felis sed erat condimentum euismod. Praesent volutpat, arcu nec bibendum ornare, quam nisi tempus arcu, ut malesuada ante erat lobortis erat. Vivamus tristique diam in neque lacinia varius. Aenean dignissim erat in diam viverra malesuada vitae a est.</p>

		<p>Curabitur quis tempus arcu. Nulla facilisi. Suspendisse at nunc nec eros vestibulum dignissim. Pellentesque vel dolor urna. Quisque sit amet tempor elit. Sed non erat vitae tellus dictum lobortis a ac tellus. Mauris consectetur nunc at erat vulputate imperdiet. Suspendisse vitae rhoncus leo.</p>

		<p>Suspendisse et tellus non neque porttitor aliquet et in nisi. Donec sem nibh, euismod a commodo id, interdum vel quam. Maecenas nisl nisi, porta elementum scelerisque id, rhoncus nec odio. Nulla facilisi.</p>

		<p>Aenean sed eleifend metus. Pellentesque molestie quam et risus convallis non pretium dui rhoncus. Aenean in odio urna, in dictum enim. Vivamus sodales lacus id lectus dictum pretium. Morbi et orci eget arcu ornare blandit at ullamcorper libero. Integer mattis nisl justo.</p>
	</div>
</div>
</body>
</html>
@+
Artemus > Ton code, en plus de poser un gros problème à cause du reset à l'arrache qui va faire plus de bien que de mal, ne réponds absolument au problème.

La réponse se trouve dans la réponse de Mabelle : dépassement des flottants.
Merci Mabelle pour cette réponse rapide, je vais de ce pas jeter un oeil a ces articles !
Et sorry pour la présentation du code Smiley confused !
Bonjour à toutes et à tous,
Ludw a écrit :
Donc, comme le nom l'indique je souhaite que ma div s'adapte selon le contenu, qu'elle aie une min-height et qu'elle puisse s'allonger car c'est pour un site dynamique.

@ Laurie-Anne : la remarque de LUDW concernait l'adaptation d'un DIV à son contenu. J'ai fait en sorte que le contenu rentre dans la DIV, et rien d'autre. Il n'a pas parlé de débordement de capacité de la DIV et encore moins de MAX-HEIGHT.

Donc, qu'est-ce que je n'ai pas compris ?

Maintenant le problème de LUDW est qu'il casse le flux. De ce fait, il est normal qu'il obtient un DIV ayant la hauteur minimal avec un contenu gigantesque, d'où cet aspect de débordement !

Alors que dans mon exemple, les boites sont bien encapsulées les unes dans les autres.

@+
Modifié par Artemus24 (11 Jul 2011 - 16:08)
Artemus24 a écrit :
Bonjour à toutes et à tous,
@ Laurie-Anne : la remarque de LUDW concernait l'adaptation d'un DIV à son contenu. J'ai fait en sorte que le contenu rentre dans la DIV, et rien d'autre. Il n'a pas parlé de débordement de capacité de la DIV et encore moins de MAX-HEIGHT.

Donc, qu'est-ce que je n'ai pas compris ?

Maintenant le problème de LUDW est qu'il casse le flux. De ce fait, il est normal qu'il obtient un DIV ayant la hauteur minimal avec un contenu gigantesque, d'où cet aspect de débordement !

Alors que dans mon exemple, les boites sont bien encapsulées les unes dans les autres.

@+


Clique sur la signature de Laurie-Anne pour avoir un début de réponse Smiley smile

Ta réponse (enfin ton code) est plein d’incohérences, tu place un absolute sur le div global on ne sait pas trop pourquoi, tu met des paragraphes partout au lieu des line break que Ludw utilisait à la base et enfin, tu fais un reset qui match TOUS les éléments de la page alors que tu ne connais pas le contenu de son site Smiley smile

Ludw à juste besoin de savoir comme fonctionne le flux d'une page et plus précisément l’impacte des floats sur ce dernier, c'est pourquoi la réponse de Mabelle est nikel et correspond bien au besoin de Ludw.

Moralité, soit tu connais la réponse à son problème et tu peux le cibler de manière précise sans faire 10km de code pré-maché Smiley cligne

Soit tu pense qu'il lui manque une base dans ses connaissances et tu la redirige (meme vers un de tes tutos si tu en as faits)

Soit tu le questionne car tu pense qu'il nous manque des infos en vu de l'aider à trouver une réponse à son problème

Car si tu ne sait pas comment expliquer la cause de son problème sans lui pondre un code c'est que tu n'as toi même pas compris comment ça fonctionne Smiley cligne (attention je ne dis pas que c'est le cas, je dis juste que c'est l'impression que ça peut donner)
Modifié par ptitvincent (11 Jul 2011 - 16:28)
Le danger de répondre en donnant des bouts de code c'est que la personne au final n'aura pas bien compris son problème ou que celui-ci ne sera peut-être pas adapté à ses besoins comme l'a bien expliqué ptitvincent.

C'est mieux d'aider la personne à comprendre son problème et lui donner des pistes de solution que de lui donner un code tout fait.
Artémus, Merci d'avoir pris le temps de réfléchir à mon problème et d'y avoir répondu.
Néanmoins, la technique que tu proposes ne m'arrange pas.
Le message de Mabelle est suffisant pour m'aider, ce sujet peut donc être cloturer.
Artemus24 a écrit :
Bonjour à toutes et à tous,

je pense qu'un bout de code vaut mieux que de long discours !

@+


Je sais pas trop quoi dire, tu m'as cloué le bec. Bien joué Smiley cligne
Bonjour à toutes et à tous,

désolé Petit Vincent, mais ce n'était pas mon intention.

Je pense qu'un bout de code est plus explicite, car après tout ceci est un forum et le dialogue est de mise. Nous ne sommes pas toujours dans la tête de la personne qui pose une question et donc, en fonction de nos moyens, de la compréhension du problème posé et de la difficulté rencontrée, il est plus judicieux d'abord de recréer le problème et ensuite de faire une tentative de résolution.

C'est ce que j'ai tenté de faire. Le problème, tel que je l'ai compris, est un problème d'encapsulation. Donc j'ai simplifié la donne, en créant deux boites, l'une dans l'autre, et du texte.

J'ai fait en sorte que chaque boite contient, sans débordement, ce qu'il contient. Par mon exemple, c'est ce que j'ai solutionné.

Maintenant, le RESET n'avait pas lieu d'être, je le reconnais. J'ai remplacé le position : relative par un position : absolute, et même ça ne change pas la nature même du problème.

Donc si je me suis trompé, le problème ne vient pas du code, qui est hors sujet, même si celui-ci fonctionne correctement, mais dans la mauvaise interprétation que j'ai fait de l'énoncé ci-dessus (le permier post).

Donc, je reformule la question : qu'est-ce que je n'ai pas compris ?

Le problème ne concerne-t-il pas d'une part l'encapsulation des DIV et d'autre part des débordement ?

@+
Artemus > le problème, c'est surtout que tu n'avais plus l'élément flottant (pour avoir deux colonnes) qui posait problème à ludw.

Un bout de code vaut certes mieux qu'un long discours, mais si le bout de code n'est pas comparable à celui qui pose problème alors il n'est pas spécialement compréhensible ni transposable.
Bonjour à toutes et à tous,

je ne dois pas avoir les yeux en face des trous. Où as-tu vu deux colonnes Laurie-Anne ?

Il y a quatre balises <div> imbriquées. Voici un extrait de son code :
<body>
<div id="globale">
<div id="globale2">
<div id="content">

<div class="content_text">
<p> L O R E M I P S U M </p>

</div>
</div>
</div>
</div>
</body>
En fait, dans mon code, j'ai supprimé tout ce qui ne servait à rien, afin d'obtenir une encapsulation correcte.

Maintenant, il aurait dû être plus explicite sur ce que l'on avait le droit de modifier !

@+
Modifié par Artemus24 (11 Jul 2011 - 20:34)
Bonsoir,

effectivement les éléments flottants posent un défaut, mais il y a aussi
- du positionnement en absolu,
- du positionement en relatif (au lieu de margin ou padding)
et du height (autre couperet implacable).

en simplifiant le code (pas de flottant qui semble inutile pour le moment) , gérer les marges avec du padding ou du margin plutot que du positionnement relatif et garder tout le monde dans le flux en oubliant le positionnement absolu, permettrait de repartir sur des bases meilleures.

Cordialement.
GC