Maison  >  Article  >  interface Web  >  Comment rendre la hauteur d'une balise div égale à la hauteur de la fenêtre du navigateur en utilisant CSS ?

Comment rendre la hauteur d'une balise div égale à la hauteur de la fenêtre du navigateur en utilisant CSS ?

王林
王林avant
2023-08-19 18:01:09743parcourir

Comment rendre la hauteur dune balise div égale à la hauteur de la fenêtre du navigateur en utilisant CSS ?

Lorsque vous travaillez sur des projets de développement Web, il existe souvent des scénarios dans lesquels vous devez attribuer à une balise div toute la hauteur de la fenêtre du navigateur. Cela peut être particulièrement utile lors de la création de mises en page pleine page, de sections de héros ou d'éléments qui en ont besoin. pour couvrir tout l'espace vertical.

Cependant, obtenir cet effet souhaité à l'aide de CSS peut être un peu délicat en raison de la nature du modèle de boîte CSS et du comportement par défaut des propriétés de hauteur.

Dans cet article, nous explorerons différentes techniques pour définir une hauteur de fenêtre de navigateur à 100 % sur une balise div à l'aide de CSS. Nous discuterons de diverses méthodes CSS et fournirons des exemples de code pratiques pour chaque technique.

Hauteur d'utilisation : 100 %

Une approche pour donner à une balise div une hauteur de 100 % consiste à utiliser la propriété height : 100 %. Cependant, il est important de noter que cette approche comporte certains défis et limites.

En définissant height : 100 % sur un élément div, vous lui demandez d'occuper 100 % de la hauteur de l'élément parent. Cette approche fonctionne bien lorsque l'élément parent a une hauteur fixe explicitement définie en CSS. Cependant, en ce qui concerne la fenêtre du navigateur elle-même, les éléments html et body (l'élément parent de la balise div) n'ont pas de hauteur fixe par défaut.

Pour que la balise div remplisse toute la hauteur de la fenêtre du navigateur, vous devez vous assurer que la hauteur des éléments parents (html et body) est de 100 %. Vous pouvez y parvenir en appliquant le CSS suivant
<!DOCTYPE html>
<html>
<head>
   <style>
      html, body {
         height: 100%;
         margin: 0;
         padding: 0;
      }   
      .container {
         height: 100%;
         background-color: lightgray;
         display: flex;
         align-items: center;
         justify-content: center;
      }   
      .content {
         width: 300px;
         height: 200px;
         background-color: white;
         border: 1px solid gray;
      }
   </style>
</head>
<body>
   <div class="container">
      <div class="content">
         <!-- Content goes here -->
      </div>
   </div>
</body>
</html>

Une fois que la hauteur de l'élément parent est définie sur 100 %, la définition de height : 100 % sur la balise div cible entraînera son expansion pour remplir toute la hauteur de la fenêtre du navigateur.

Cependant, il y a quelques éléments à considérer lors de l'utilisation de cette méthode

  • Scroll Si le contenu à l'intérieur du div dépasse la hauteur de la fenêtre du navigateur, une barre de défilement apparaîtra pour permettre de faire défiler le contenu.

  • Éléments imbriqués Si la balise div est imbriquée dans d'autres éléments avec des hauteurs basées sur un pourcentage, vous devez vous assurer que tous les éléments parents ont une hauteur de 100 % pour que l'approche fonctionne correctement.

  • Compatibilité Les anciennes versions d'Internet Explorer (IE) peuvent ne pas prendre en charge correctement l'approche hauteur : 100 %, il est donc important de tester votre implémentation sur différents navigateurs.

Bien que l'approche hauteur : 100 % puisse être une solution simple dans certains cas, elle a ses limites et peut nécessiter des considérations supplémentaires. Dans les prochaines sections, nous explorerons des technologies alternatives offrant plus de flexibilité et une meilleure prise en charge du navigateur.

Technique 1 : Utilisation de la hauteur : 100vh

Une autre technique pour définir la hauteur d'une balise div à 100 % de la fenêtre du navigateur consiste à utiliser l'attribut height : 100vh. L'unité vh représente un pourcentage de la hauteur de la fenêtre.

En définissant height: 100vh sur un élément div, vous lui demandez d'occuper 100 % de la hauteur de la fenêtre, quels que soient ses éléments parents. Cette approche fournit une solution plus simple sans avoir besoin de définir les éléments parents. hauteur explicitement.

Exemple

Voici un extrait de code complet démontrant cette technique -

<!DOCTYPE html>
<html>
<head>
   <style>
      .container {
         height: 100vh;
         background-color: lightgray;
         display: flex;
         align-items: center;
         justify-content: center;
      }   
      .content {
         width: 300px;
         height: 200px;
         background-color: white;
         border: 1px solid gray;
      }
   </style>
</head>
<body>
   <div class="container">
      <div class="content">
         <!-- Content goes here -->
      </div>
   </div>
</body>
</html>

Dans cet extrait de code, nous avons une structure HTML similaire à celle précédente, un div parent avec la classe "conteneur" et un div cible avec la classe "content". Appliquez des styles CSS pour obtenir l'effet souhaité.

La principale différence est que nous définissons la hauteur : 100vh sur la classe "conteneur". Cela provoque l'expansion du conteneur div sur toute la hauteur de la fenêtre. Le div interne "contenu" hérite de la hauteur et s'étirera également pour remplir toute la hauteur de la fenêtre.

En utilisant l'approche height: 100vh, vous pouvez facilement obtenir un div pleine hauteur sans définir explicitement la hauteur des éléments parents.

Astuce 2 : Utilisez Flexbox

Flexbox est un puissant module de mise en page CSS qui offre un moyen flexible de distribuer et d'aligner des éléments dans un conteneur. Il peut également être utilisé pour atteindre une hauteur de 100 % des balises div.

En utilisant les propriétés Flexbox, nous pouvons créer un conteneur qui se développe pour remplir l'espace vertical disponible. Voici un extrait de code complet qui démontre cette technique

.

Example 

<!DOCTYPE html>
<html>
<head>
   <style>
      .container {
         display: flex;
         flex-direction: column;
         height: 100vh;
         background-color: lightgray;
      }   
      .content {
         flex-grow: 1;
         background-color: white;
         border: 1px solid gray;
         margin: 20px;
      }
   </style>
</head>
<body>
   <div class="container">
      <div class="content">
         <!-- Content goes here -->
      </div>
   </div>
</body>
</html>

In this code snippet, we have a parent div element with a class of "container" and a child div with a class of "content". The CSS styles are applied to utilize Flexbox for achieving 100% height.

通过在 "container" 类上设置 display: flex,我们创建了一个 Flexbox 容器。添加 flex-direction: column 可以确保子元素垂直堆叠。height: 100vh 属性使容器扩展以填充整个视口的高度。

To make the "content" div take up the remaining vertical space, we set flex-grow: 1. This instructs the "content" element to grow and fill the available space within the Flexbox container.

技巧3:使用CSS Grid

CSS Grid is another powerful layout module that allows you to create complex grid-based layouts with ease. It can also be leveraged to achieve 100% height for a div tag.

By utilizing CSS Grid, we can create a grid container that expands to fill the available vertical space. Here's a complete code snippet that demonstrates this technique 

Example 

<!DOCTYPE html>
<html>
<head>
   <style>
      .container {
         display: grid;
         grid-template-rows: 1fr;
         height: 100vh;
         background-color: lightgray;
      }   
      .content {
         background-color: white;
         border: 1px solid gray;
         margin: 20px;
      }
   </style>
</head>
<body>
   <div class="container">
      <div class="content">
         <!-- Content goes here -->
      </div>
   </div>
</body>
</html>

In this code snippet, we have a parent div element with a class of "container" and a child div with a class of "content". The CSS styles are applied to utilize CSS Grid for achieving 100% height.

By setting display: grid on the "container" class, we create a CSS Grid container. The grid-template-rows: 1fr property sets the row template to 1fr, which means the available space is distributed evenly among the rows. This ensures that the "content" div takes up the full height of the container.

The height: 100vh property makes the container expand to fill the full height of the viewport.

技巧4:使用绝对定位

Another technique to give a div tag 100% height of the browser window is by using absolute positioning. By positioning the div element absolutely and setting its top, bottom, left, and right properties to 0, we can make it expand to fill the entire height of the viewport.

Example

这是一个完整的示例代码片段,演示了这个技术 

<!DOCTYPE html>
<html>
<head>
   <style>
      .container {
         position: relative;
         height: 100vh;
         background-color: lightgray;
      }   
      .content {
         position: absolute;
         top: 0;
         bottom: 0;
         left: 0;
         right: 0;
         background-color: white;
         border: 1px solid gray;
         margin: 20px;
      }
   </style>
</head>
<body>
   <div class="container">
      <div class="content">
         <!-- Content goes here -->
      </div>
   </div>
</body>
</html>

在这段代码片段中,我们有一个class为"container"的父div元素和一个class为"content"的子div元素。CSS样式被应用以利用绝对定位来实现100%的高度。

通过在"container"类上设置position: relative,我们为子div建立了一个定位上下文。这使我们能够将"content" div绝对定位相对于其父元素。

属性 top: 0, bottom: 0, left: 0 和 right: 0 将 "content" div 定位在其父元素的顶部、底部、左侧和右侧边缘。这将导致它拉伸并填充容器的整个高度。

Technique 5: 使用 Flexbox 和 Overflow

在某些情况下,您可能会遇到内容超过视口高度的情况。在这种情况下,您可以使用Flexbox和overflow属性的组合,以确保div保持100%的高度,同时允许溢出内容滚动。

示例

Here's a complete running example snippet that demonstrates this technique −

<!DOCTYPE html>
<html>
<head>
   <style>
      .container {
         display: flex;
         flex-direction: column;
         height: 100vh;
         background-color: lightgray;
      }   
      .content {
         flex-grow: 1;
         background-color: white;
         border: 1px solid gray;
         margin: 20px;
         overflow: auto;
      }
   </style>
</head>
<body>
   <div class="container">
      <div class="content">
         <!-- Content goes here -->
      </div>
   </div>
</body>
</html>

In this code snippet, we have a parent div element with a class of "container" and a child div with a class of "content". The CSS styles are applied to utilize Flexbox and handle overflow.

Similar to Technique 2, we set display: flex on the "container" class to create a Flexbox container. The flex-direction: column property ensures that the child elements are stacked vertically.

通过在“content”类上设置flex-grow: 1,div会扩展以占据容器中剩余的垂直空间。此外,如果内容超过div的高度,我们使用overflow: auto来启用内容的垂直滚动。

Conclusion

Achieving a 100% height for a

tag in CSS can be accomplished using various techniques. By utilizing CSS properties like height: 100vh, Flexbox, CSS Grid, and absolute positioning, we can create responsive layouts that fill the entire height of the browser window.

Each technique offers its advantages and may be more suitable depending on the specific requirements of your project. It's important to consider factors such as content overflow and browser compatibility when choosing the appropriate approach.

通过理解和实施这些技术,您可以确保您的
标签根据视口高度动态适应,提供无缝且视觉上吸引人的用户体验。尝试这些方法并选择最适合您需求的方法

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer