J'utilise un dégradé radial comme arrière-plan sur ma page Web, comme ceci:
background-image: -webkit-gradient(radial, 100% 100%, 10, 90% 90%, 600, from(#ccc), to(#000));
Cela fonctionne, mais lorsque le contenu ne remplit pas toute la page, le dégradé est coupé. Comment puis-je faire en sorte que l' <body>
élément remplisse toujours toute la page?
body { width: 100%; height: 100%; }
ça ne marche pas?body { width: 100%; height: 100%; }
ça ne marche pas. Je suppose que je dois aussi l'appliquer<html>
.Réponses:
la source
html { height: 100%; }
fait.html { height: 100%; }
nibody { height: 100%; }
n'était suffisant pour moi (Opera inclus comme test) Ce qui fonctionnait le mieux était d'html, body { min-height: 100%; }
utiliser la hauteur au lieu de la hauteur min. Mon arrière-plan était blanc sans la couleur d'arrière-plan appliquée lorsque j'ai développé des divs pliables au milieu de ma page.min-height
corrigé cela.100%
à100vh
.Sur notre site, nous avons des pages où le contenu est statique et des pages où il est chargé avec AJAX. Sur une page (une page de recherche), il y avait des cas où les résultats AJAX remplissaient plus que la page, et des cas où il ne renverrait aucun résultat. Pour que l'image d'arrière-plan remplisse la page dans tous les cas, nous avons dû appliquer le CSS suivant:
height
pour lehtml
etmin-height
pour lebody
.la source
width: 100%;
.margin: 0;
est également suffisant, pas besoin de spécifier de quelle unité vous utilisez zéroComme aucune des autres réponses n'a fonctionné pour moi, j'ai décidé de poster ceci comme une réponse pour les autres à la recherche d'une solution qui ont également trouvé le même problème. Le html et le corps devaient être définis avec
min-height
ou le dégradé ne remplirait pas la hauteur du corps.J'ai trouvé que le commentaire de Stephen P fournissait la bonne réponse à cela.
Lorsque la hauteur html (ou html et body) est réglée à 100%,
la source
J'ai dû appliquer 100% à la fois au html et au corps.
la source
Essayez d'utiliser les unités de mesure de la fenêtre d'affichage (vh, vm) au niveau du corps
html, corps {marge: 0; rembourrage: 0; } corps {hauteur min: 100vh; }
Utilisez les unités vh pour les marges horizontales, les rembourrages et les bordures sur le corps et soustrayez-les de la valeur de hauteur min.
J'ai eu des résultats bizarres en utilisant des unités vh, vm sur des éléments dans le corps, en particulier lors du redimensionnement.
la source
Je pense que la manière en grande partie correcte est de définir le CSS sur ceci:
la source
J'ai essayé toutes les solutions ci-dessus et je ne discrédite aucune d'entre elles, mais dans mon cas, elles n'ont pas fonctionné.
Pour moi, le problème était dû au fait que la
<header>
balise avait une valeurmargin-top
de 5em et<footer>
une marge inférieure de 5em. Je les ai supprimés et en ai mis à la placepadding
(respectivement en haut et en bas). Je ne sais pas si le remplacement de la marge était une solution idéale au problème, mais le fait est que, si les premier et dernier éléments de votre<body>
ont des marges, vous voudrez peut-être l'examiner et les supprimer.Mes balises
html
etbody
avaient les styles suivantsla source
Si vous avez une bordure ou un rembourrage, la solution
produit le rendu imparfait
Pour bien faire les choses en présence d'une bordure ou d'un rembourrage
utiliser à la place
comme Martin l'a souligné, bien que ce
overflow: hidden
ne soit pas nécessaire.(2018 - testé avec Chrome 69 et IE 11)
la source
body
balise. Sans cette bordure, lebody
remplira exactement 100% de la fenêtre, vous pouvez le voir avec une couleur d'arrière-plan par exemple. La bonne réponse à cette question a été acceptée il y a 7 ans est toujours valable.Cela fonctionne pour moi:
la source