Je veux que le corps ait 100% de la hauteur du navigateur. Puis-je le faire en utilisant CSS?
J'ai essayé de régler height: 100%
, mais cela ne fonctionne pas.
Je veux définir une couleur d'arrière-plan pour une page pour remplir toute la fenêtre du navigateur, mais si la page a peu de contenu, j'obtiens une barre blanche laide en bas.
Réponses:
Essayez également de définir la hauteur de l'élément html à 100%.
Body regarde son parent (HTML) pour savoir comment mettre à l'échelle la propriété dynamique, donc l'élément HTML doit également avoir sa hauteur définie.
Cependant, le contenu du corps devra probablement changer dynamiquement. La définition d'une hauteur minimale de 100% permettra d'atteindre cet objectif.
la source
body {min-height}
version, vous ne pouvez pas utiliser l'.body-child{height: 100%}
astuce.vh
->body { height: 100vh }
- vérifiez la réponse ici stackoverflow.com/a/25829844/2680216Au lieu de définir à la fois la hauteur de l'élément
html
et celle de l'body
élément100%
, vous pouvez également utiliser des longueurs de pourcentage de fenêtre.Dans ce cas, vous pouvez utiliser la valeur
100vh
- qui est la hauteur de la fenêtre.Exemple ici
Ceci est pris en charge dans la plupart des navigateurs modernes - le support peut être trouvé ici .
la source
margin: 0;
pour éviter une barre de défilement verticale persistante à droite.Si vous avez une image d'arrière-plan, vous voudrez la définir à la place:
Cela garantit que votre balise de corps est autorisée à continuer de croître lorsque le contenu est plus grand que la fenêtre d'affichage et que l'image d'arrière-plan continue de se répéter / défiler / quoi que ce soit lorsque vous commencez à faire défiler vers le bas.
N'oubliez pas que si vous devez prendre en charge IE6, vous devrez trouver un moyen de vous caler sur le
height:100%
corps,height
comme IE6 le traite demin-height
toute façon.la source
body{min-height: 100vh}
body { height: auto; }
que les barres de défilement ne s'affichent pas dans FireFox. à part ça, fonctionne parfaitement.Si vous souhaitez conserver les marges sur le corps et ne souhaitez pas de barres de défilement, utilisez le CSS suivant:
Le réglage
body {min-height:100%}
vous donnera des barres de défilement.Voir la démo sur http://jsbin.com/aCaDahEK/2/edit?html,output .
la source
height: auto;
dans labody
clause pour que les barres de défilement apparaissent maintenant.la source
Après avoir testé différents scénarios, je pense que c'est la meilleure solution:
Il est dynamique en ce que les
html
et lesbody
éléments augmenteront automatiquement si leur débordement de contenu. J'ai testé cela dans la dernière version de Firefox, Chrome et IE 11.Voir le violon complet ici (pour vos haineux de table, vous pouvez toujours le changer pour utiliser un div):
https://jsfiddle.net/71yp4rh1/9/
Cela étant dit, il y a plusieurs problèmes avec les réponses affichées ici .
L'utilisation du CSS ci-dessus fera que le html et l'élément body ne se développeront PAS automatiquement si leur contenu déborde comme indiqué ici:
https://jsfiddle.net/9vyy620m/4/
Lorsque vous faites défiler, remarquez l'arrière-plan répétitif? Cela se produit car la hauteur de l'élément de corps n'a PAS augmenté en raison du débordement de sa table enfant. Pourquoi ne se développe-t-il pas comme tout autre élément de bloc? Je ne suis pas sûr. Je pense que les navigateurs gèrent cela incorrectement.
Le réglage d'une hauteur minimale de 100% sur le corps comme indiqué ci-dessus provoque d'autres problèmes. Si vous procédez ainsi, vous ne pouvez pas spécifier qu'un div ou une table enfant occupe une hauteur en pourcentage, comme indiqué ici:
https://jsfiddle.net/aq74v2v7/4/
J'espère que cela aide quelqu'un. Je pense que les navigateurs gèrent cela incorrectement. Je m'attendrais à ce que la taille du corps s'ajuste automatiquement de plus en plus si ses enfants débordaient. Cependant, cela ne semble pas se produire lorsque vous utilisez 100% de hauteur et 100% de largeur.
la source
height: 100vh
n'est pas non plus une solution. La définition de votre conteneur supérieur pour être100vh
élevé et100vw
peut provoquer des problèmes si le conteneur a des barres de défilement - alors il sera plus grand qu'il ne devrait l'être (et pourrait rendre les barres de défilement visibles inutilement). Lesheight: 100vh
problèmes causés aussi pour nous sur les appareils Android plus récents (par exemple Xiaomi Mi 9 avec Android 9), où le conteneur serait plus grand que l'écran lui - même, et rendrait inutile de barre de défilement verticale du corps du document.Ce que j'utilise au début de chaque fichier CSS que j'utilise est le suivant:
La marge de 0 garantit que les éléments HTML et BODY ne sont pas positionnés automatiquement par le navigateur pour avoir un espace à leur gauche ou à leur droite.
Le remplissage de 0 garantit que les éléments HTML et BODY ne repoussent pas automatiquement tout ce qu'ils contiennent vers le bas ou vers la droite en raison des paramètres par défaut du navigateur.
Les variantes de largeur et de hauteur sont définies à 100% pour garantir que le navigateur ne les redimensionne pas en prévision d'une marge ou d'un rembourrage automatiquement défini, les valeurs min et max étant définies au cas où des choses étranges et inexplicables se produiraient, même si vous probablement pas besoin d'eux.
Cette solution signifie aussi que, comme je l'ai fait quand j'ai commencé sur HTML et CSS il y a plusieurs années, vous n'aurez pas à donner votre première
<div>
unemargin:-8px;
pour le faire rentrer dans le coin de la fenêtre du navigateur.Avant de poster, j'ai regardé mon autre projet CSS en plein écran et j'ai constaté que tout ce que j'utilisais était juste
body{margin:0;}
et rien d'autre, ce qui a bien fonctionné au cours des 2 années que j'ai travaillé dessus.J'espère que cette réponse détaillée vous aidera, et je ressens votre douleur. À mes yeux, il est stupide que les navigateurs définissent une frontière invisible à gauche et parfois en haut des éléments body / html.
la source
width: 100%
éléments body et html? Oui, je comprends, que d'un point de vue pratique, celabody { margin: 0; }
devrait suffire dans la plupart des cas. Je veux juste mieux comprendre.Une mise à jour rapide
Une meilleure solution avec le CSS d'aujourd'hui
la source
overflow: auto
voici la magie. Btw j'utilise Chrome.Ici:
la source
Vous pouvez également utiliser JS si nécessaire
la source
Essayer
la source
width: 100%
éléments body et html? Oui, je comprends, que d'un point de vue pratique, celabody { margin: 0; }
devrait suffire dans la plupart des cas. Je veux juste mieux comprendre.S'il te plaît, vérifie cela:
Ou essayez une nouvelle méthode Hauteur de la fenêtre d'affichage:
Fenêtre d'affichage: Si votre fenêtre d'affichage signifie que le contenu de l'écran, quelle que soit sa taille, sera à la hauteur de l'écran.
la source
width: 100%
éléments body et html?Si vous ne voulez pas que le travail d'édition de votre propre fichier CSS et que vous définissiez vous-même les règles de hauteur, les frameworks CSS les plus typiques résolvent également ce problème avec l'élément body remplissant l'intégralité de la page, entre autres, à l'aise avec plusieurs tailles des fenêtres.
Par exemple, le framework Tacit CSS résout ce problème dès le départ, où vous n'avez pas besoin de définir de règles et de classes CSS et vous incluez simplement le fichier CSS dans votre code HTML.
la source
Fonctionne pour tous les principaux navigateurs: FF, Chrome, Opera, IE9 +. Fonctionne avec les images d'arrière-plan et les dégradés. Les barres de défilement sont disponibles en fonction des besoins de contenu.
la source
J'utiliserais ça
Le navigateur utilisera
min-height: 100vh
et si en quelque sorte le navigateur est un peu plus ancien, cemin-height: 100%
sera la solution de rechange.Le
overflow: auto
est nécessaire si vous voulez que le corps et le html augmentent leur hauteur lorsque vous redimensionnez l'écran (à une taille mobile par exemple)la source
Seulement avec 1 ligne de CSS… Vous pouvez le faire.
la source
100vh
n'est pastoutes les réponses sont correctes à 100% et bien expliquées, mais j'ai fait quelque chose de bien et de très simple pour le rendre réactif.
Ici, l'élément prendra 100% de la hauteur du port de vue, mais en ce qui concerne la vue mobile, il ne semble pas bien spécialement sur la vue portrait (mobile), donc lorsque le port de vue devient plus petit, l'élément s'effondrera et se chevauchera. donc pour le rendre peu réactif voici le code. j'espère que quelqu'un obtiendra de l'aide de cela.
voici la démo JSfiddle.
la source
Ici mise à jour
la source
À propos de l'espace supplémentaire en bas: votre page est-elle une application ASP.NET? Si c'est le cas, il y a probablement un emballage presque tout dans votre balisage. N'oubliez pas non plus de styliser le formulaire. L'ajout
overflow:hidden;
au formulaire peut supprimer l'espace supplémentaire en bas.la source
la source
width: 100%
éléments body et html? Oui, je comprends, que d'un point de vue pratique, celabody { margin: 0; }
devrait suffire dans la plupart des cas. Je veux juste mieux comprendre.CSS3 a une nouvelle méthode.
Il rend ViewPort 100% égal à la hauteur.
Donc, votre code devrait être
la source