28172 sujets

CSS et mise en forme, CSS3

Bonjour,

j'avais déjà posté ici pour réaliser un gabarit dont le footer s'affiche correctement en bas de page lorsque le contenu est plus court. J'y étais finalement arrivé seul avec un peu de recherche.

Depuis j'ai réorganisé le gabarit, viré le menu de gauche, et tout fonctionne toujours aussi bien mais ce qui me chiffonne maintenant c'est la taille de mon div#content. Je voudrai que lui aussi, avec un contenu court, prenne toute la hauteur restante sur la page.

Voici ma structure html:

<body>
<div id="global">
    <div id="header">
        <div id="header2"> 
        </div>
    </div>
    <div id="center">
        <div id="content">
        </div> 
    </div>
    <div id="footer"> 
        <div id="footer2">
        </div>
    </div> 
</div>
</body>


et ma css:

* {margin:0; padding:0; border:0}
html,body {
	height:100%;
	background-color:#F7F7F7;
}
/******************/
/* Positionnement */
/******************/

#global{ /* ne pas modifier: permet au footer d'être en bas avec un contenu court */
	min-height: 100%;
	position: relative;
}
#header { /* header largeur 100% */
	background-color:#000;
	height: 100px;
	width: 100%;
} 
#header2{ /* header largeur 998px */
	width:998px;
	margin:auto;
}
#center{ /* ne pas modifier: permet au footer d'être en bas avec un contenu court et de conserver les bordures sur #content */
	overflow: hidden;
	padding-bottom:150px;
}
#content { /* contenu */
	margin:20px auto;
	border: 1px solid #CCC;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
	width:998px;
} 
#footer { /* Pied de page largeur 100% */
	position: absolute;
	width:100%;
	background-color:#000;
	height:150px;
	bottom: 0;
}
#footer2{ /* pied de page largeur 998px */
	width:998px;
	margin:auto;
}


J'ai tester avec des min-height mais il ne sont pas pris en compte.

Auriez vous une piste ? ou est-ce carrément impossible ?
Pas de réponse pour le moment à te donner, au contraire j'ai justement la même interrogation.
Pour moi un DIV centré à bloquer à 1000px de large, avec une hauteur variable. Je souhaite que le pied de page remplisse le reste de la hauteur de la page en s'étirant sur toute la largeur. J'ai essayé plusieurs trucs notamment via Javascript... mais rien à faire.
HTML5 CSS3 ... c'est pas la révolution
Modifié par jimmyneutron (13 Oct 2011 - 16:48)
Bonjour,

Pour la question de départ: ça ne risque pas de marcher, car un height ou min-height en pourcentages ne sera pris en compte que si le parent de l'élément a lui-même une hauteur explicite (d'où la nécessité d'avoir un height:100% sur l'élément racine, puis un height:100% sur l'élément BODY, et enfin un min-height:100% sur l'élément #global).

Si le parent n'a pas de hauteur définie (height) mais uniquement une hauteur minimale (min-height), ça ne marche pas. Dans ton cas de figure, non seulement tu as ce problème mais en plus #global n'est même pas le parent de #content, donc c'est juste pas possible.

Il y a peut-être un coup à jouer avec display:table et display:table-cell (CSS 2.1). À tester.
jimmyneutron a écrit :
HTML5 CSS3 ... c'est pas la révolution

Surtout quand on n'utilise pas les fonctionnalités de CSS3 qui permettraient de le faire (à priori Flexible Box Layout et Grid Layout), et pas non plus certaines fonctionnalités de CSS 2.1 qui, bien que moins efficaces, permettent peut-être d'arriver à ses fins (je pense à display:table encore une fois, mais dans ce cas précis je ne suis pas sûr que ça soit adapté). Quant à HTML5, aucun rapport ici, on parle de mise en page. Smiley cligne

Quoi qu'il en soit HTML5 et CSS3 ne sont pas des révolutions mais des évolutions (de CSS2 et HTML4), et c'est heureux! La dernière fois que le W3C a tenté une révolution, avec XHTML2, ça s'est mal terminé...

Et, pour info, CSS3 n'est pas une spécification monolithique mais un ensemble de spécifications qui avancent à des rythmes différents. Par exemple les sélecteurs CSS3 sont finalisés et un premier brouillon des sélecteurs CSS niveau 4 (donc sélecteurs CSS4) a été publié. Tandis que Flexible Box Layout est une spécification pas finalisée, qui a pas mal changé récemment, et que Grid Layout est une spécification plutôt stable mais récente, et implémentée dans IE10 uniquement à l'heure actuelle.
Modifié par fvsch (17 Oct 2011 - 09:47)