J'ai du mal avec un projet client. Tous mes div
s n'ont pas de positionnement absolu, height:100%
pour html
, body
et conteneur div
s, et pourtant le contenu statique s'arrête en deçà de son contenu (à 910 pixels).
Je peux changer la propriété de débordement en auto
et l'arrière-plan continuera jusqu'à la fin du contenu, mais il ajoute une barre de défilement et la bordure inférieure du contenu statique div
reste au même endroit (à 910 pixels).
MISE À JOUR: Le lien de développement n'était plus valide, je l'ai donc supprimé. Il suffit de dire que l'explication détaillée d'Animuson est la partie précieuse de ce fil et a résolu le problème des conteneurs qui ne s'étendent pas pour correspondre à leur contenu. - Ty
Vous avez utilisé la mauvaise propriété overflow-y
pour effacer et vous devez définir un min-height
au lieu d'une hauteur normale. Essaye ça:
#static-content {
background-color: #FFFFFF;
margin: 0 auto;
min-height: 100%; /* Set to minimum height so overflow doesn't get hidden */
overflow-y: hidden; /* HIDE overflow; I know, it doesn't make much sense */
position: relative;
width: 960px;
}
Étant donné cette boîte verte qui a un remplissage de 20px (pour la visibilité), notez comment une seule boîte rouge flottant à gauche s'étendra au-delà de la limite de sa boîte parente. En effet, le contenu flottant ne prend pas réellement de "place" dans la zone visuelle. Tous les autres éléments s’étendront en dessous et seul text s’enroulera autour de lui.
Pour contrer cela et faire en sorte que la boîte verte englobe complètement la zone de sa boîte rouge enfant, nous pouvons ajouter overflow: hidden
à ses styles. Cela élargira la boîte assez loin.
Vous pourriez penser que simplement ajouter height: 100%
est le moyen le plus simple de le développer à l'endroit où il doit être. Cependant, la propriété height
spécifie une hauteur absolue. Puisque le contenu qui est flotté n'occupe pas réellement d'espace vertical, notre propriété overflow: hidden
coupera tout le contenu qui dépasse la hauteur du parent.
Puisque nous souhaitons qu'il se développe à au moins à 100% de la hauteur, nous pouvons utiliser la propriété min-height
pour le forcer là-bas tout en maintenant la hauteur "automatique" nécessaire pour que la boîte verte parente englobe complètement la boîte rouge enfant, ne le laissant dépasser les 100% que lorsqu'il en a aussi besoin.
Tous les éléments, par défaut, sont définis sur overflow: visible
, de sorte que cette propriété ne change rien. La seule différence que vous aviez entre ceci et le premier exemple que j'ai fourni est que vous aviez un height: 100%
défini sur l'élément. Ainsi, le parent était en expansion à 100% de la taille mais n’englobait toujours pas toute la hauteur de sa boîte rouge enfant.
Si height: 100% ne fonctionne pas bien pour vous, vous pouvez essayer cette fonction de calcul à partir de CSS3:
/* Firefox */
height: -moz-calc(100%);
/* WebKit */
height: -webkit-calc(100%);
/* Standard */
height: calc(100%);
Vous pouvez essayer cela soit avec height, soit avec min-height, comme déjà dit. Vous pouvez avec cette fonction de calcul également d'autres calculs tels que:
height: -moz-calc(100% - 50px);
Et cela est parfois très utile, comme vous pouvez le deviner.
Si vous devez utiliser overflow: visible pour une raison quelconque, il existe un autre moyen de forcer le conteneur à s'étirer pour contenir tout le contenu flottant. Vous devez mettre element avec clear: les deux comme éléments du dernier conteneur. Si vous ignorez les anciens IE (<8), vous pouvez le faire avec des css très simples (vide https://css-tricks.com/snippets/css/clear-fix/ ):
.your-container:after {
content: "";
display: table;
clear: both;
}
height:100%
est la hauteur du contenu qui coule avec votre conteneur et ne tient pas compte de votre contenu flottant. C'est pourquoi la hauteur de votre conteneur est courte. Retirez-le et effacez correctement votre conteneur pour effacer vos éléments flottants et cela fonctionnera:
#static-content:before, #static-content:aftr {
display:table;
content:"";
}
#static-content:after {
clear:both;
}
#static-content {
zoom:1; /*ie fix*/
}
Vous avez une float
dans static-maincontent
, qui le supprime du flux normal du contenu du document et par conséquent, static-content
ne se soucie plus de sa hauteur et ne veut donc pas s’étendre pour le couvrir . height:100%
pour static-content
.
LIRE POUR RÉPONDRE !!! - D'accord, j'avais donc le même problème, il suffisait de supprimer le style "Positionnement". Devrait fonctionner parfaitement bien.