VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[XHTML/CSS] Hauteur des balises <div>

Free K - Dernière réponse le 29 juil. 2010 à 16:40
Bonjour à tous,

Je suis un passionné de standards XHTML et CSS, mais il y a un problème que je n'ai jamais réussi à résoudre sans utiliser un moyen détourné, lent, complexe et pas propre :

il s'agit d'attribuer une hauteur maximale (100% du conteneur) à une balise <div>.

Bien entendu, on pense directement à :

DIV.maClasse {
height: 100%;
}


Mais les tailles (width et height) en pourcentages (%) ne fonctionnent pas pour les balises de type bloc (donc <div>).

Par exemple, pour une barre de navigation, à côté de la zone de contenu de la page : ce sont deux <div>, l'un généralement plus long (haut) que l'autre : celui du contenu, et on veut que dans ce cas le bas de la barre de navigation soit aligné avec celui de la zone de contenu, qui est plus grande, autrement dit que le <div> de la barre de navigation ait une hauteur maximale par rapport à celle de la page entière.

J'espère que ça parlera à quelqu'un, et merci beaucoup si vous trouvez une solution !
Lire la suite 

[XHTML/CSS] Hauteur des balises <div> »

22 réponses
Réponse
+14
moins plus
Bonsoir tout le monde je viens à l'instant de trouver la réponse à votre problème pour mettre une hauteur en pourcentage à une div et je vous dirais pas c'est quoi mouahahaha...je plaisante me haissais pas tout de suite rooooh.

Bon voila mon code HTML:

<div id="wrapper"></div>

Code CSS:

html{
height: 100%;
}
body{
height: 100%;
margin: 0;
padding: 0;
}
#wrapper {
width: 100px;
height: 100%;
background-color: #03125F;
margin: auto;
}

Comme vous pouvez le constater il faut remonter jusqu'à la balise HTML et lui assigner une hauteur en pourcentage de 100% comme sur le body,ensuite vous pouvez mettre la hauteur que vous voulez à votre div.
Bonne soirée, il y a mon adresse si vous voulez. younass95@hotmail.com
ameyrus - 20 avril 2008 à 18:58
Hey

merci capoeiradance!!!! pile poil ce que je cherchais ^^

@+
Ajouter un commentaire
Réponse
+1
moins plus
Un message un peu en retard...

Mais pour ceux qui ont le même souci voilà un post qui apporte une réponse:
<a href="http://www.alsacreations.com/actu/lire/92-vous-avez-dit-height100.html">Vous avez dit height=100%</a>


En gros ce que dit l'article en plus de vos post c'est que la déclaration xml ou xhtml y est pour quelque chose...

Je vous laisse méditer.

JU
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Tu peux essayer avec postion: absolute, puis top et bottom dans un div.
Ce div il faut lui mettre un id et pas un class, comme ça tu peux le
retrouver avec du javascript.
Pour les navigateurs respectant le W3C, tu peux même essayer avec
position: fixed => le cadre ne se déplace plus avec la page
Attention, ça fontionne pas avec IE le fixed, il faut jouer avec
javascript sur l'évement scroll du body pour repositionner le cadre
à chaque déplacement, ça fait scintiller mais la fonctionnalité est là...

A+, Crabs
Kalonji001 - 29 juil. 2010 à 16:40
Un div ou une class.. ou même rien... tu pourras toujours le retrouver avec du JS :)
Ajouter un commentaire
Réponse
+0
moins plus
Utilise document.body.clientHeight, en javascript, et document.body.clientWidth.
En ce qui me concerne, je suis confronté à un problème similaire, je voudrais obtenir la hauteur maximale de la zone contenu (celle de la fenêtre quand elle est maximisée) sans avoir à redimensionner la fenêtre. Je pourrais le calculer facilement si je trouvais une propriété qui donne la hauteur totale de la fenêtre

exemple avec window.height :

hauteurmax = parseInt(document.body.clientHeight) / parseInt(window.height) * parseInt(screen.availHeight);
Ajouter un commentaire
Réponse
+0
moins plus
Tiens nu vieux sujet. ^^
Je vais quand même ajouter ma pierre.

Déjà les blocs prennent toute la place qu'ils peuvent par defaut ( =100%).
Ensuite, bien sur que si les bloc acceptent les pourcentages. Seulement il faut savoir que le pourcentage se calcule sur la taille du bloc parent. Ainsi il faut qu'il ai une taille (enfin de mon côté ça n'a jamais marché si la taille du parent n'était pas spécifié, sauf en pourcentage).

Voilà. ^^
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

En fait ce problème n'a pas de solution.

Il faut s'y prendre autrement et donner l'impression que les blocs ont la même hauteur.

Ça peut se faire avec une image d'arrière-plan dans le bloc le plus grand qui contient les autres 
pompage
alistapart (en)


--
Ajouter un commentaire
Réponse
+0
moins plus
Le probleme de cette solution c'est que firefox ne comprends pas que la <div> parent a une hauteur variable ... j'essaie de me pencher dessus mais je ne trouve pas de solution : help !
Dalida- 7 févr. 2008 à 12:45
salut,

tu ne trouveras sans doute pas mieux mieux que les fausses colonnes conseillées par Gihef en <4>.
Ajouter un commentaire
Réponse
+0
moins plus
Je n'ai pas vraiment de solution mais moi j'utilise des marges.
Par exemple pr un div d'environ 85%, étant donné que les largeurs de fenêtres ne varient pas énormément, je mets une marge de 150 px à gauche et la même à droite.
Ululo
Ajouter un commentaire
Réponse
+0
moins plus
C'est pas encore possible en CSS2.

Quand tu attribus en CSS un width ou un height, ils s'appliquent sur le contenu interne. La division est extensible en hauteur par defaut.

Toute fois, tu peux essayer quelque chose qui se raprochera pas mal de se que tu veux. Il s'agit bien de mettre un height: 100%;, mais il faut ainsi y rajouter un margin: auto; afin que la specification soit prise en compte par rapport au body exterieur.

Donc ça donnerait:

.taClasse {
height: 100%;
margin: auto;
}

Je pense que ceci marchera si toute fois tu as bien coder l'interface exterieur.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
j'espéres pas répondre à côté mais:

Pourquoi pas utiliser un un <table> plutot? ça permet de créer une vrai colonne, et c'est plus simple que de devoir modifier le positionnement des div avec des float ou en absolute voire faire des calculs en js.

<table style="width="100%; height:100%;" >
<tr>
<td>
Colonne de 100% a gauche
</td>
<td>
Le reste du contenu de la page
</td>
</tr>
</table>

Poids lourd - 21 août 2008 à 14:57
bonjour dalida
en fait j'ai résolu mon problème juste en appliquant les bonnes propriété à la balise div et en jouant avec "overflow:" et maintenant je l'ai appliqué sur un site que je mettrai en ligne le 30 aout prochain almconsultants.com donc n'hésite pas à visiter
grafxpoids lourd - 21 août 2008 à 13:30
regarde au niveau des propriétés des div anciennement calques sous dreamweaver
essaye la propriété
div{ overflow:auto;}
Poids lourd - 21 août 2008 à 15:01
Merci chef
ca marche et j'ai appliqué ca sur un site que je met en ligne a la fin de ce mois donc n'hésite pas : almconsultants.com
Ajouter un commentaire
Réponse
+0
moins plus
Parfait ! Merci beaucoup, 2 heures que je cherchais ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir
J'ai un petit soucis avec le cadre de ma page web : http://lifebooster.free.fr/ecouter_de_la_musique.html
On voit bien que les <div> utilisées pour les bords latéraux ne s'adaptent pas à la taille du <body>.
Voici le code CSS associé :

html
{
height: 100%;
width : 100%;
}

body
{
height: 100%;
width : 100%;
margin: 0;
padding: 0;
}

#leftcenter
{
height : 100% ;
width : 32px ;
background-image : url(pics/cadre/leftcenter.gif);
background-repeat : repeat-y ;
float : left;
}

#rightcenter
{
height : 100% ;
width : 40px ;
background-image : url(pics/cadre/rightcenter.gif);
background-repeat : repeat-y ;
float : right;
}

Merci de votre aide :)
Ajouter un commentaire
Réponse
+0
moins plus
Déjà "height=100%" n'est pas correct je crois, ça donne 100% de la largeur de la page en hauteur si je ne me trompe.
Ensuite ton lien n'est pas valide, et à partir de la base du site (lifebooster.free.fr) je n'ai pas retrouvé la page.
Mais en tous cas moi je n'aurai pas organisé ça comme ça, surtout qu'on a pas le CSS de ta div centrale là.
Ajouter un commentaire
Ce document intitulé « [XHTML/CSS] Hauteur des balises <div> » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?