J'ai un élément div sur ma page avec sa hauteur réglée à 100%. La hauteur du corps est également réglée à 100%. La div intérieure a un arrière-plan et tout cela et est différente de l'arrière-plan du corps. Cela fonctionne pour rendre la hauteur de div 100% de la hauteur de l'écran du navigateur, mais le problème est que j'ai du contenu à l'intérieur de cette div qui s'étend verticalement au-delà de la hauteur de l'écran du navigateur. Lorsque je fais défiler vers le bas, le div se termine au point où vous deviez commencer à faire défiler la page, mais le contenu déborde au-delà. Comment puis-je faire en sorte que le div aille toujours jusqu'en bas pour s'adapter au contenu interne?
Voici une simplification de mon CSS:
body {
height:100%;
background:red;
}
#some_div {
height:100%;
background:black;
}
Une fois que je fais défiler la page, la noirceur se termine et le contenu s'écoule sur le fond rouge. Peu importe que je règle la position relative ou absolue sur #some_div, le problème se produit dans les deux cas. Le contenu à l'intérieur de #some_div est principalement positionné de manière absolue et est généré dynamiquement à partir d'une base de données, de sorte que sa hauteur ne peut pas être connue à l'avance.
Edit: Voici une capture d'écran du problème:
overflow: hidden;
,overflow: scroll;
, etc.).Réponses:
Voici ce que vous devez faire dans le style CSS, sur le
div
Et ne touche pas
height
la source
height: 100%
àhtml, body
et le conteneur div pour qu'il remplisse la hauteur quand il n'y avait pas assez de contenu.display: block;
nécessaire? Les divisions sont déjà des éléments de niveau bloc.
supprimez-les. Essayez également d'ajuster la hauteur de la ligne. Par exemple, j'ai misline-height: 0
, parce que je n'avais pas besoin de texte, juste pour montrer une image.Réglez les
height
àauto
etmin-height
à100%
. Cela devrait le résoudre pour la plupart des navigateurs.la source
height
est100%
etmin-height
estauto
- j'attendre à ce qu'ils soient interchangeables dans ce cas, mais on dirait qu'ils ne sont pas.Habituellement, ce problème survient lorsque les éléments enfants d'une division parent sont flottants. Voici la dernière solution du problème:
Dans votre fichier CSS, écrivez la classe suivante appelée .clearfix avec le pseudo-sélecteur : after
Ensuite, dans votre HTML, ajoutez la classe .clearfix à votre Div parente. Par exemple:
Cela devrait toujours fonctionner. Vous pouvez appeler le nom de la classe en tant que .group au lieu de .clearfix , car cela rendra le code plus sémantique. Notez que, il n'est pas nécessaire d'ajouter le point ou même un espace dans la valeur du contenu entre la double citation "". Aussi, débordement: auto; peut résoudre le problème, mais cela pose d'autres problèmes comme l'affichage de la barre de défilement et n'est pas recommandé.
Source: Blog de Lisa Catalano et Chris Coyier
la source
Si vous laissez simplement le
height: 100%
et utilisezdisplay:block;
le,div
cela prendra autant d'espace que le contenu à l'intérieur dudiv
. De cette façon, tout le texte restera dans le fond noir.la source
display: block
? Je ne vois pas cela dans votre question.float: none;
, utilisezclear:both;
. Il fait la même chose mais est plus cross-browser, @RonnieVDPoelCette question est peut-être ancienne, mais elle mérite une mise à jour. Voici une autre façon de faire cela:
la source
Essaye ça:
IE6 et les versions antérieures ne prennent pas en charge la propriété min-height.
Je pense que le problème est que lorsque vous dites au corps d'avoir une hauteur de 100%, son arrière-plan ne peut être aussi grand que la hauteur d'une "fenêtre" du navigateur (la zone de visualisation qui exclut les barres d'outils et les barres d'état et les barres de menus du navigateur et les bords de fenêtre). Si le contenu est plus grand qu'une fenêtre, il dépassera la hauteur consacrée à l'arrière-plan.
Cette propriété min-height sur le corps doit FORCER l'arrière-plan à être au moins aussi haut qu'une fenêtre si votre contenu ne remplit pas une page entière vers le bas, mais il doit également le laisser croître vers le bas pour englober plus de contenu intérieur.
la source
Ancienne question, mais dans mon cas, j'ai trouvé que l'utilisation l'avait
position:fixed
résolue pour moi. Ma situation aurait pu être un peu différente cependant. J'avais un semi-transparent superposédiv
avec une animation de chargement que j'avais besoin d'afficher pendant le chargement de la page. Donc, utiliserheight:auto / 100%
ou lesmin-height: 100%
deux remplissait la fenêtre mais pas la zone hors écran. L'utilisation deposition:fixed
cette superposition a fait défiler avec l'utilisateur, de sorte qu'elle couvrait toujours la zone visible et gardait mon animation de préchargement centrée sur l'écran.la source
Ajoutez simplement ces deux lignes dans votre identifiant css #some_div
Après cela, vous obtiendrez ce que vous recherchez!
la source
Je ne suis pas tout à fait sûr d'avoir compris la question car c'est une réponse assez simple, mais voici ... :)
Avez-vous essayé de définir la propriété de débordement du conteneur sur visible ou automatique?
L'ajout de cela devrait pousser le conteneur noir à la taille requise par votre conteneur dynamique. Je préfère le visible à l'automobile car l'auto semble venir avec des barres de défilement ...
la source
Les navigateurs modernes prennent en charge l'unité "hauteur de la fenêtre". Cela étendra le div à la hauteur de la fenêtre disponible. Je la trouve plus fiable que toute autre approche.
la source
Même toi, tu peux faire comme ça
Cela inclura votre chaque div dynamique selon le contenu. Supposons que si vous avez un div commun avec la classe, cela augmentera la hauteur de chaque div dynamique en fonction du contenu
la source
Vous pouvez aussi utiliser
le mien a travaillé avec ça
la source
RECOUVREMENT SANS POSITION: FIXE
Une façon vraiment cool de comprendre cela pour un menu récent était de régler le corps sur:
et définissez votre classe wrapper comme ceci:
Cela signifie que vous n'avez pas à définir la position fixe et que vous pouvez toujours permettre le défilement. J'ai utilisé ceci pour superposer des menus qui sont VRAIMENT grands.
la source
utiliser flex
la source
Ok, j'ai essayé quelque chose comme ça:
corps (normal)
Ce n'est pas la manière exacte de l'écrire, mais si vous faites afficher le div principal sous forme de tableau, il se développe et j'ai implémenté des barres de défilement.
la source