Skip to main content

Comment définir la hauteur d'un élément HTML à 100%

TRACTEUR (Avril 2025)

TRACTEUR (Avril 2025)
Anonim

Une question fréquemment posée dans la conception de sites Web est "comment définir la hauteur d'un élément sur 100%"?

Cela peut sembler une réponse facile. Vous utilisez simplement CSS pour définir la hauteur d’un élément sur 100%, mais cela n’étire pas toujours cet élément pour s’adapter à la totalité de la fenêtre du navigateur. Voyons pourquoi cela se produit et ce que vous pouvez faire pour obtenir ce style visuel.

Pixels et pourcentages

Lorsque vous définissez la hauteur d'un élément à l'aide de la propriété CSS et d'une valeur utilisant des pixels, cet élément occupe beaucoup d'espace vertical dans le navigateur. Par exemple, un paragraphe avec un

hauteur: 100px;

occupera 100 pixels d’espace vertical dans votre conception. Peu importe la taille de la fenêtre de votre navigateur, cet élément aura une hauteur de 100 pixels.

Les pourcentages fonctionnent différemment des pixels. Selon la spécification W3C, les hauteurs en pourcentage sont calculées par rapport à la hauteur du conteneur. Donc, si vous mettez un paragraphe avec un

hauteur: 50%;

dans un div de hauteur 100px, le paragraphe aura une hauteur de 50 pixels, soit 50% de son élément parent.

Pourquoi les hauteurs en pourcentage échouent

Si vous concevez une page Web et que vous souhaitez occuper toute la hauteur de la fenêtre dans une colonne, l'inclination naturelle est d'ajouter un

hauteur: 100%;

à cet élément. Après tout, si vous définissez la

largeur

à

largeur: 100%;

l'élément prendra tout l'espace horizontal de la page, donc

la taille

devrait fonctionner le même, non? Malheureusement, ce n'est pas le cas du tout.

Pour comprendre pourquoi cela se produit, vous devez comprendre comment les navigateurs interprètent hauteur et largeur. Les navigateurs Web calculent la largeur totale disponible en fonction de la largeur de la fenêtre du navigateur.

largeur

Si vous ne définissez aucune valeur dans vos documents, le navigateur en transmettra automatiquement le contenu afin de remplir toute la largeur de la fenêtre (largeur par défaut: 100%).

La valeur de la hauteur est calculée différemment de la largeur. En fait, les navigateurs n'évaluent pas la hauteur si le contenu est trop long pour sortir de la fenêtre d'affichage (ce qui nécessite des barres de défilement) ou si le concepteur Web définit un absolu pour un élément de la page.

la taille

Sinon, le navigateur laisse simplement le contenu s'écouler dans la largeur de la fenêtre d'affichage jusqu'à la fin. La hauteur n'est pas réellement calculée du tout.

Des problèmes surviennent lorsque vous définissez un pourcentage en hauteur sur un élément comportant des éléments parents sans hauteur définie. En d'autres termes, les éléments parents ont une valeur par défaut.

hauteur: auto;

En réalité, vous demandez au navigateur de calculer une hauteur à partir d’une valeur indéfinie. Comme cela équivaut à une valeur nulle, le navigateur ne fait rien.

Si vous souhaitez définir une hauteur en pourcentage sur vos pages Web, vous devez définir la hauteur de chaque élément parent de celui que vous souhaitez définir comme hauteur. En d'autres termes, si vous avez une page comme celle-ci:

Contenu ici

Vous voulez probablement le

div

et le paragraphe en elle d'avoir une hauteur de 100%, mais cette div a en fait deux éléments parents:

et. Afin de définir la hauteur de la

div

à une hauteur relative, vous devez définir la hauteur du

corps

et

html

éléments aussi bien. Vous devez donc utiliser CSS pour définir la hauteur non seulement de la div, mais également du corps et des éléments HTML. Cela peut être un défi, car vous pouvez rapidement être submergé par tout ce qui est réglé à 100% de la hauteur, uniquement pour obtenir cet effet souhaité.

Quelques points à noter lorsque vous travaillez avec 100% d'altitude

Maintenant que vous savez comment régler la hauteur de vos éléments de page à 100%, il peut être intéressant de le faire et de le faire pour toutes vos pages, mais vous devez prendre en compte quelques éléments:

  • Les marges et le remplissage peuvent ajouter une barre de défilement là où vous n'en voulez pas.L’une des choses les plus ennuyeuses que j’ai trouvées avec le travail sur les hauteurs en pourcentage (et les largeurs) est qu’alors le remplissage et les marges sur ces mêmes éléments peuvent ajouter des barres de défilement à la page, même si tout le contenu s’affiche sans avoir besoin d’archives. En effet, la hauteur ou la largeur de l'élément est la première chose calculée. Ensuite, les marges et les rembourrages sont ajoutés. Donc, si vous avez un élément avec une hauteur de 100% et des marges supérieure et inférieure de 10 pixels chacune, il y aura une barre de défilement pour les 20 pixels supplémentaires. N'oubliez pas que le modèle de boîte CSS ajoute une marge, une bordure et un remplissage à la taille d'un élément. Par conséquent, 100% des valeurs de ce modèle de boîte seront supérieures à 100%.
  • Si votre contenu prend plus que la hauteur définie, il écrasera tout ce qui suivra.En d'autres termes, si vous avez un design avec une colonne de 80% en hauteur et que le contenu à l'intérieur de celui-ci occupe 100% de la hauteur, ces 20% supplémentaires continueront sous la colonne et briseront le design visuel. de votre page. S'il y a du contenu en dessous de cette colonne, le texte s'écrira simplement par dessus. Je vois souvent cela se produire lorsqu'un concepteur Web tente de forcer la hauteur d'une page et la fait fonctionner parfaitement pour le lancement, mais lorsque le contenu de cette page change à l'avenir, ses hauteurs absolues interrompent totalement le flux de la page. Cela est d'autant plus vrai lorsque vous créez des sites Web réactifs dont la largeur et la hauteur doivent changer en fonction de la taille de la fenêtre.

Pour résoudre ce problème, vous pouvez également définir la hauteur de l'élément. Si vous le définissez à

auto,

Les barres de défilement apparaissent si elles sont nécessaires mais disparaissent quand elles ne le sont pasCela corrige la coupure visuelle, mais cela ajoute des barres de défilement là où vous ne les voudrez peut-être pas.

Utilisation des unités de fenêtre

Une autre façon de relever ce défi consiste à expérimenter avec les unités CSS Viewport. En utilisant l'unité de mesure de hauteur de la fenêtre d'affichage, vous pouvez dimensionner les éléments pour qu'ils occupent une hauteur définie de la fenêtre d'affichage. Cela changera à mesure que la fenêtre d'affichage change! C’est un excellent moyen d’obtenir vos effets visuels 100% en hauteur sur une page tout en les laissant flexibles pour différents appareils et tailles d’écran.