Voici le HTML:
<div id="outer">
<div id="inner"></div>
Test
</div>
Et voici le CSS:
#inner {
float: left;
height: 100%;
}
Lors de l'inspection avec les outils de développement Chrome, la div intérieure obtient une hauteur de 0 px.
Comment puis-je le forcer à 100% de la hauteur du div parent?
Réponses:
Pour que la
#outer
hauteur soit basée sur son contenu et ait#inner
sa hauteur sur celle-ci, placez les deux éléments de manière absolue.Plus de détails peuvent être trouvés dans la spécification de la propriété css height , mais
#inner
doivent essentiellement ignorer la#outer
hauteur si sa#outer
hauteur estauto
, sauf si elle#outer
est positionnée de manière absolue. La#inner
hauteur sera alors de 0, à moins qu'elle#inner
ne soit positionnée absolument.Cependant ... En positionnant
#inner
absolument, unfloat
paramètre sera ignoré, vous devrez donc choisir une largeur pour#inner
explicitement et ajouter un remplissage#outer
pour simuler l'habillage du texte que je soupçonne que vous voulez. Par exemple, ci-dessous, le remplissage de#outer
est la largeur de#inner
+3. De manière pratique (comme le but était d'obtenir une#inner
hauteur à 100%), il n'est pas nécessaire d'envelopper le texte en dessous#inner
, donc cela ressemblera à ce qui#inner
est flottant.J'ai supprimé ma réponse précédente, car elle était basée sur trop d'hypothèses erronées sur votre objectif.
la source
HTML/CSS
:)Pour le parent:
Vous devez ajouter quelques préfixes http://css-tricks.com/using-flexbox/
Edit: Seul inconvénient est IE comme d'habitude, IE9 ne prend pas en charge flex. http://caniuse.com/flexbox
Edit 2: Comme l'a noté @toddsby, aligner les éléments est pour le parent, et sa valeur par défaut est en fait stretch . Si vous souhaitez une valeur différente pour enfant, il existe une propriété align-self.
Edit 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
la source
align-items: stretch;
n'est pas requis car il s'agit de la valeur par défaut. Il doit également être défini sur le parent et non sur l'enfant.En fait, tant que l'élément parent est positionné, vous pouvez définir la hauteur de l'enfant à 100%. À savoir, au cas où vous ne voudriez pas que le parent soit absolument positionné. Permettez-moi d'expliquer davantage:
la source
position:absolute
(qui pourrait interférer avec les styles d'un site)Tant que vous n'avez pas besoin de prendre en charge les versions d'Internet Explorer antérieures à IE8, vous pouvez utiliser
display: table-cell
pour cela:HTML:
CSS:
Cela forcera chaque élément de la
.inner
classe à occuper toute la hauteur de son élément parent.la source
display: table-cell;
élément ne remplit plus la hauteur de son conteneur? Je dois manquer quelque chose, car c'est votre propre question ...?J'ai fait un exemple pour résoudre votre problème.
Vous devez faire un wrapper, le faire flotter, puis positionner en absolu votre div et lui donner 100% de hauteur.
HTML
CSS:
Explication: le div .right est absolument positionné. Cela signifie que sa largeur et sa hauteur, ainsi que les positions en haut et à gauche seront calculées sur la base du premier div parent absolument ou relatif positionné UNIQUEMENT si les propriétés de largeur ou de hauteur sont explicitement déclarées en CSS; si elles ne sont pas explicitement déclarées, ces propriétés seront calculées en fonction du conteneur parent (.right-wrapper).
Ainsi, la hauteur de 100% du DIV sera calculée en fonction de la hauteur finale du .container et la position finale de la position .right sera calculée en fonction du conteneur parent.
la source
.right
contenu de la.left
colonne est plus court que le contenu de la colonne. Par exemple, si vous l'utilisez sur un composant dans lequel la.left
colonne a un contenu de taille variable et la colonne de droite affiche simplement une flèche vers une page de détail, alors cette solution fonctionne bien. +1 pour celaIci, c'est un moyen plus simple d'y parvenir:
Merci à @Itay in Div flotté , 100% hauteur
la source
Si vous êtes prêt à utiliser un petit jQuery, la réponse est simple!
Cela fonctionne bien pour faire flotter un seul élément sur un côté avec 100% de hauteur de son parent tandis que les autres éléments flottants qui devraient normalement s'enrouler sont conservés d'un côté.
J'espère que cela aide les autres fans de jQuery.
la source
Il s'agit d'un exemple de code pour un système de grille de même hauteur.
Ci-dessus est le CSS pour div externe
Ci-dessus est le div intérieur
J'espère que cela vous aidera
la source
Cela m'a aidé.
Changez à droite: et à gauche: pour définir la largeur préférable #inner.
la source
Un cas similaire lorsque vous avez besoin de plusieurs éléments enfants ayant la même hauteur peut être résolu avec flexbox:
https://css-tricks.com/using-flexbox/
Définis
display: flex;
pour les éléments parents etflex: 1;
enfants, ils auront tous la même hauteur.la source
essayer
afficher plus d'options dans: Comment empêcher les parents d'éléments flottants de s'effondrer?
la source