Pages :
Salut je suis en train d'apprendre le CSS et j'ai un gros problème.
J'ai fais une interface à partir de toshop, et exporté en html avec Image ready , jusqu'ici tout va bien, j'ai mon interface, et ma feuille CSS.
J'aimerais que le zone de texte du site soit extensible en fonction de la
quantité de texte , de manière verticale. Et qu'un footer sois présent en bas, à la manière de ce site par exemple : http://pompage.net/articles
je me prend la tête depuis des plombes a essayer de faire des div dans des divs etc.. mais rien n'y fais des que mon texte depasse la hauteur de mon calque , il passe en dessous du footer au lieu de pousser le footer vers le bas.... et je ne veux pas utiliser la fonction overflow pour des raisons estéthiques....

voila le code de la page :

<html>
<head>
<title>INTERFACE</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="test.css" rel="stylesheet" type="text/css">
</head>
<body style="background-color:#FFFFFF; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px;">


<div id="bigcontenu">

<div id="conteneurhaut">
	<div id="flash">
		<img src="images/flash.jpg" width="640" height="164" alt="">
	</div>
	<div id="menu">
		<img src="images/menu.gif" width="640" height="56" alt="">
	</div>
	<div id="contenu-haut">
		<img src="images/contenu_haut.gif" width="640" height="20" alt="">
	</div>
	</div>
	
	
	
	
	<div id="conteneurtexte">
	<div id="index-04">
	</div>
	<div id="index-06"></div>
	<div id="contenu">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In vestibulum tempor nibh. Cras sapien eros, aliquam vel, molestie nec, ultrices vel, dui. Nulla facilisi. Donec tempus fringilla massa. Cras congue mauris sed lectus. Aenean lorem urna, vestibulum in, imperdiet egestas, rutrum eu, nunc. Aenean mattis purus vitae justo. Ut pellentesque vulputate justo. Morbi et leo id arcu ornare fermentum. Phasellus iaculis elit quis arcu. Maecenas wisi. </p>
      <p>Fusce enim. Sed ullamcorper tellus fermentum nisl. In eget nibh nec nisl accumsan sollicitudin. Quisque gravida enim sed quam. Proin eget turpis ac tellus sodales fermentum. Proin sodales lacus sit amet magna. Ut malesuada erat et pede. Pellentesque vitae elit. Aliquam massa erat, vestibulum et, facilisis varius, adipiscing eu, lacus. Nunc imperdiet lacus ac massa. Proin suscipit metus nec nunc. Curabitur et turpis. Aenean bibendum justo vitae quam. </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
	</div>
	
	
	<div id="bas">
	<div id="contenu-bas"><img src="images/contenu_bas.gif" width="640" height="20">
	</div>
<div id="footer">
		<img src="images/footer.gif" width="640" height="68" alt="">
</div>
</div>

</div>

</body>
</html>



Et le code CSS :

/* CSS Document */
#bigcontenu {
position:relative;
height:auto;
}

#conteneurhaut {
	position:absolute;
	left:0px;
	top:0px;
	width:640px;
	height:360px;
}

#flash {
	position:absolute;
	left:0px;
	top:0px;
	width:640px;
	height:164px;
}

#menu {
	position:absolute;
	left:0px;
	top:164px;
	width:640px;
	height:56px;
}

#contenu-haut {
	position:absolute;
	left:0px;
	top:220px;
	width:640px;
	height:20px;
}

#index-04 {
	position:absolute;
	left:0px;
	top:240px;
	width:16px;
	height:auto;
	
}

#contenu {
	position:absolute;
	left:16px;
	top:240px;
	width:608px;
	height:auto;
	font-family:Arial, Helvetica, sans-serif;
	font-size:10px;
	margin-top:inherit;
	margin-bottom:inherit;
	
}

#index-06 {
	position:absolute;
	left:624px;
	top:240px;
	width:16px;
	height:auto;
}

#contenu-bas {
	position:absolute;
	left:0px;
	top:272px;
	width:640px;
	height:20px;
}

#footer {
	position:relative;
	left:0px;
	top:292px;
	width:640px;
	height:68px;
	bottom:0px;
	margin-bottom:0px;
}

#conteneurtexte {
position:relative;
}

#bas {
position:relative;
}



merci de votre aide....
Bonsoir.

Un conseil pour la mise au point :
placer dans la feuille de style des lignes comme :

border : 4pt solid green

border : 2pt solid red

associées aux div pour les repérer, et les visualiser. Je l'ai fait sur ce source et j'ai vu des drôles de choses...

Sinon, une question : pourquoi bouder overflow, quelles sont les raisons esthétiques?
Modifié par GeorgesM (04 Sep 2005 - 20:51)
salut !
euh je n'ai pas bien compris ce que tu me demande ?

Sinon pour overflow, c'est juste pour eviter la barre de scroll .
Par exemple :

div#haut
{
border : 4pt solid green
....
}

div#bas
{
border : 2pt solid red
....
}


permet de différentier et visualiser les zones couvertes par les div
/* CSS Document */
#bigcontenu {
position:relative;
height:auto;
border : 2pt solid orange;
}

#conteneurhaut {
	position:absolute;
	left:0px;
	top:0px;
	width:640px;
	height:360px;
	border : 2pt solid green ;
}

#flash {
	position:absolute;
	left:0px;
	top:0px;
	width:640px;
	height:164px;
}

#menu {
	position:absolute;
	left:0px;
	top:164px;
	width:640px;
	height:56px;
}

#contenu-haut {
	position:absolute;
	left:0px;
	top:220px;
	width:640px;
	height:20px;
}

#index-04 {
	position:absolute;
	left:0px;
	top:240px;
	width:16px;
	height:auto;
	
}

#contenu {
	position:absolute;
	left:16px;
	top:240px;
	width:608px;
	height:auto;
	font-family:Arial, Helvetica, sans-serif;
	font-size:10px;
	margin-top:inherit;
	margin-bottom:inherit;
	
}

#index-06 {
	position:absolute;
	left:624px;
	top:240px;
	width:16px;
	height:auto;
}

#contenu-bas {
	position:absolute;
	left:0px;
	top:272px;
	width:640px;
	height:20px;
}

#footer {
	position:relative;
	left:0px;
	top:292px;
	width:640px;
	height:68px;
	bottom:0px;
	margin-bottom:0px;
}

#conteneurtexte {
position:relative;
border : 2pt solid red
 ;
}

#bas {
position:relative;
border : 2pt solid blue;
}




Html :


<html>
<head>
<title>INTERFACE</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="test.css" rel="stylesheet" type="text/css">
</head>
<body style="background-color:#FFFFFF; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px;">


<div id="bigcontenu">

<div id="conteneurhaut">
	<div id="flash">
		<img src="images/flash.jpg" width="640" height="164" alt="">
	</div>
	<div id="menu">
		<img src="images/menu.gif" width="640" height="56" alt="">
	</div>
	<div id="contenu-haut">
		<img src="images/contenu_haut.gif" width="640" height="20" alt="">
	</div>
	</div>
	
	
	
	
	<div id="conteneurtexte">
	<div id="index-04">
	</div>
	<div id="index-06"></div>
	<div id="contenu">
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In vestibulum tempor nibh. Cras sapien eros, aliquam vel, molestie nec, ultrices vel, dui. Nulla facilisi. Donec tempus fringilla massa. Cras congue mauris sed lectus. Aenean lorem urna, vestibulum in, imperdiet egestas, rutrum eu, nunc. Aenean mattis purus vitae justo. Ut pellentesque vulputate justo. Morbi et leo id arcu ornare fermentum. Phasellus iaculis elit quis arcu. Maecenas wisi. </p>
      <p>Fusce enim. Sed ullamcorper tellus fermentum nisl. In eget nibh nec nisl accumsan sollicitudin. Quisque gravida enim sed quam. Proin eget turpis ac tellus sodales fermentum. Proin sodales lacus sit amet magna. Ut malesuada erat et pede. Pellentesque vitae elit. Aliquam massa erat, vestibulum et, facilisis varius, adipiscing eu, lacus. Nunc imperdiet lacus ac massa. Proin suscipit metus nec nunc. Curabitur et turpis. Aenean bibendum justo vitae quam. </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
	</div>
	
	
	<div id="bas">
	<div id="contenu-bas"><img src="images/contenu_bas.gif" width="640" height="20">
	</div>
<div id="footer">
		<img src="images/footer.gif" width="640" height="68" alt="">
</div>
</div>

</div>

</body>
</html>
J'ai dégrossi ton problème (du moins je l'espère). Ce n'est pas évident de comprendre comment tu comptes monter ton squelette avec toutes tes div en absolute.
Moi je monte les boîtes les unes au dessus des autres, si besoin j'intègre dans des "contenant" mais pas obligatoirement.
Voilà le code (les css sont dans la page) :
<html>
<head>
<title>INTERFACE</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	text-align: center;
}
 #bigcontenu {
	position:relative;
	width: 640px;
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: auto;
	text-align: left;
	background-color: #0033FF;
 }

 #conteneurhaut {
	position:relative;
	width:640px;
	background-color: #CC6699;
	text-align: left;
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: auto;
 }

 #flash {
	width:640px;
	height:164px;
	background-color: #999966;
 }

 #menu {
	width:640px;
	height:56px;
	background-color: #339999;
 }

 #contenu-haut {
 width:640px;
 height:20px;
 }

 #index-04 {
	width:16px;
	height:30px;
	background-color: #33CC99;
	float: left;

 }

 #contenu {
	width:640px;
	font-family:Arial, Helvetica, sans-serif;
	font-size:10px;
	background-color: #FF00FF;
	float: left;

 }

 #index-06 {
	width:16px;
	float: left;
	height: 45px;
	margin: 0px;
 }

 #contenu-bas {
 width:640px;
 height:20px;
 }

 #footer {
	width:640px;
	height:68px;
	margin-bottom:0px;
	background-color: #FFCC33;
	margin-top: 0px;
	margin-right: auto;
	margin-left: auto;
 }

 #conteneurtexte {
	background-color: #FFCC99;
 }

 #bas {
	background-color: #FF3333;
 }

-->
</style>
<body style="background-color:#FFFFFF; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px;">
  <div id="conteneurhaut">
    <div id="flash">Flash</div>
    <div id="menu">Menu</div>
    <div id="contenu-haut">Contenu-haut</div>
  </div>
<div id="bigcontenu">
  <div id="conteneurtexte">
    <div id="contenu">
	<div id="index-04">index-04</div>
    <div id="index-06">index-06</div>
      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In vestibulum tempor nibh. Cras sapien eros, aliquam vel, molestie nec, ultrices vel, dui. Nulla facilisi. Donec tempus fringilla massa. Cras congue mauris sed lectus. Aenean lorem urna, vestibulum in, imperdiet egestas, rutrum eu, nunc. Aenean mattis purus vitae justo. Ut pellentesque vulputate justo. Morbi et leo id arcu ornare fermentum. Phasellus iaculis elit quis arcu. Maecenas wisi. </p>
      <p>Fusce enim. Sed ullamcorper tellus fermentum nisl. In eget nibh nec nisl accumsan sollicitudin. Quisque gravida enim sed quam. Proin eget turpis ac tellus sodales fermentum. Proin sodales lacus sit amet magna. Ut malesuada erat et pede. Pellentesque vitae elit. Aliquam massa erat, vestibulum et, facilisis varius, adipiscing eu, lacus. Nunc imperdiet lacus ac massa. Proin suscipit metus nec nunc. Curabitur et turpis. Aenean bibendum justo vitae quam. </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
    </div>
    <div id="bas">Bas</div>
  </div>
</div>
<div id="footer">Footer</div>
</body>
</html>

Il te reste à savoir comment tu gères les index avec le texte (à gauche l'un sous l'autre ?), tu as la solution sur Alsa, à toi de la trouver (moi j'utilise Mr propre...).

Bon courage... Smiley lol
C'est plus clair avec les bordures couleur... J'ai l'impression que beaucoup de
div ne sont pas à leur place, ou ne servent pas.

Il faudrait dessiner une maquette de l'ecran, et la transcrire avec des div en les identifiants.
Après ce premier travail, rédiger la feuille de style. Après ce sera (encore) plus clair.
Modifié par GeorgesM (04 Sep 2005 - 22:52)
merci pour vos réponses si rapides, je vais voire ça de suite.

En fait c'est vraiment un probleme ridicule.
a la base le code était propre, mais j'ai tout merdé en rajoutant des conteneurs. Je voulais juste que la zone de texte soit extensible en hauteur avec un footer en bas. D'habitude je fais mes site avec l'overflox pour eviter justement ce genre de probleme, mais j'en avais assez et je voulais apprendre un peu plus.

D'habitude voila q quoi ressemble les site que je fais : http://kompleet.free.fr/angelkelly/test.htm ( c'est pas moi angel kelly hein lol )
merci momo frc exactement ce que je voulais faire , mais en regardant le code CSS j'ai pas compris ce qui a changé ! je voudrais savoir precisement dans quel div il faut mettre tel ou tel code par rapport a une autre div . Smiley biggol Smiley sweatdrop
Si tu n'as pas compris ce qui a changé, il faut peut être imprimer les deux codes ça va te sauter aux yeux... non ? Smiley smile

Mon principe reste à peu près le même, une div header indépendante, l'intérêt et qu'avec une connexion faible tu charges déjà le header (les gens voit quelque chose se passer ils attendent la suite) une div du corps du site (étirable) qui pousse un pied de page indépendant aussi.

Toutes ces div sont 50 auto en margin g/d et zéro en h/b (body texte center pour IE), bref du classique je crois...

Après si tu as des colonnes étirables dans le corps ça se complique un peu, suivant le design il y a plusieurs solutions... Smiley lol
nan j'ai vu ce qui a changé, j'ai pas compris pourquoi les rajouts dans la css ont résolu mon probleme.... Smiley biggol
Tu vas apprendre... comme moi, j'ai passé déjà quelques semaines à me prendre la tête sur les Div, les positionnements, les merdages complexes comme tu viens de faire...
Si on te mâche le boulot ça va pas t'avancer... va sur Pompage aussi et ailleurs, le web regorge de trucs et d'infos... tu as plus simple aussi : siphonne un peu de web et regarde dedans... tu vas faire plein de conneries et ça va rentrer.... Smiley lol
kompleet a écrit :
oui voilà !!!! les index 04 et 06 sont des colonnes ! et c'est ça le bordel !!!
argh !

Tu ne dis pas comment tu veux les voir fonctionner avec le corps du texte.
bon, je commence à comprendre le truc !!!
en fait il faut faire 3 div indépendante et non pas 3 Div dans une grosse div !!!!!!
donc j'ai refais le code par moi même , css et html.

css :

/* CSS Document */
#header2 {
	position:relative;
	left:0px;
	top:0px;
	width:608px;
	margin-bottom:0px;
	margin-top:0px;
	margin-left:auto;
	margin-right:auto;
}

#header {
	position:absolute;
	left:0px;
	top:0px;
	width:608px;
	height:148px;
}

#menu {
	position:absolute;
	left:0px;
	top:148px;
	width:608px;
	height:56px;
}

#content-haut {
	position:absolute;
	left:0px;
	top:204px;
	width:608px;
	height:20px;
}

#content {
	position:relative;
	left:0px;
	top:224px;
	width:608px;
	height:32px;
	margin-bottom:0px;
	margin-top:0px;
	margin-left:auto;
	margin-right:auto;
	text-align:justify;
	background-color:#FFFFFF;
	font-family:Arial, Helvetica, sans-serif;
	font-size:10px;
}

#footer {
	position:relative;
	left:0px;
	width:608px;
	height:72px;
	margin-bottom:0px;
	margin-top:0px;
	margin-left:auto;
	margin-right:auto;
	top:224px;
}

#gauche {
position:relative;
left:0px;
top:0px;
background-color:#00FF66;
height:500px;
width:50px;
margin-top:0px;
margin-right:auto;
right:344px;
}

body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
text-align:center;
background-color:#999999;

}



HTML :

<html>
<head>
<title>INTERFACE</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<link href="new.css" rel="stylesheet" type="text/css">
</head>

<div id="gauche">
</div>


<div id="header2">
	<div id="header">
		<img src="images/header.jpg" width="608" height="148" alt="">
	</div>
	<div id="menu">
		<img src="images/menu.jpg" width="608" height="56" alt="">
	</div>
	<div id="content-haut">
		<img src="images/content_haut.jpg" width="608" height="20" alt="">
	</div>
</div>
<div id="content">
  <p>hdjkhfkjhdfkljdhkfjhdkljfh<br>
  ddsdjskdjskdjsldsjdlskdsjkmljfdmlkfd</p>
  <p>gfdgfgfhggfhgfhghg</p>
  <p>hgfhgfhfghgfhgf<br>
    sdsgdfghfgthgjghjhgkjhj
</p>
</div>


	<div id="footer">
	<img src="images/footer.jpg" width="608" height="72" alt=""></div>

</body>
</html>


Par contre là je viens de tenter d'ajouter 1 colonne à gauche de l'interface, ( celle en verte) mais je n'arrive pas a faire en sorte qu'elle soit a gauche et collée a l'interface et non pas au dessus de l'interface.... je projette d'en mettre une aussi a droite, quand j'aurais compris comment placer celle de gauche.... ( c'est pour placer une image en background repeat Y pour des quetsions esthétiques )
kompleet a écrit :
bon, je commence à comprendre le truc !!!
en fait il faut faire 3 div indépendante et non pas 3 Div dans une grosse div !!!!!!
donc j'ai refais le code par moi même , css et html.

Je fais comme ça, tu n'es pas obligé...

kompleet a écrit :

( c'est pour placer une image en background repeat Y pour des quetsions esthétiques )

Réfléchit un peu au problème tu verras que la solution est bien plus simple que le truc de fou que tu es en train de faire (note que j'ai commencé à faire comme toi au début).
Un indice : tu vas utiliser 1 seul motif à répéter... Smiley lol

Edit : ton code est bizarre, il manque la balise <body>...
Modifié par momo-fr (05 Sep 2005 - 23:56)
Pages :