Aquí está el HTML:
<div id="outer">
<div id="inner"></div>
Test
</div>
Y aquí está el CSS:
#inner {
float: left;
height: 100%;
}
Tras la inspección con las herramientas de desarrollador de Chrome, el div interno está obteniendo una altura de 0px.
¿Cómo puedo forzarlo a que sea el 100% de la altura del div principal?
Respuestas:
Para que la
#outer
altura se base en su contenido y#inner
basar su altura en eso, coloque ambos elementos en una posición absoluta.Se pueden encontrar más detalles en la especificación de la propiedad css height , pero esencialmente,
#inner
debe ignorar la#outer
altura si#outer
la altura esauto
, a menos que#outer
esté posicionada absolutamente. Entonces la#inner
altura será 0, a menos que#inner
se coloque absolutamente.Sin embargo ... Al posicionarse
#inner
absolutamente,float
se ignorará una configuración, por lo que deberá elegir un ancho#inner
explícitamente y agregar relleno#outer
para falsificar el ajuste de texto que sospecho que desea. Por ejemplo, a continuación, el relleno de#outer
es el ancho de#inner
+3. Convenientemente (ya que el objetivo principal era obtener la#inner
altura al 100%) no hay necesidad de ajustar el texto debajo#inner
, por lo que se verá como#inner
flotante.Eliminé mi respuesta anterior, ya que se basaba en demasiadas suposiciones erróneas sobre su objetivo.
fuente
HTML/CSS
:)Para los padres:
Debe agregar algunos prefijos http://css-tricks.com/using-flexbox/
Editar: el único inconveniente es IE como de costumbre, IE9 no admite flex. http://caniuse.com/flexbox
Edición 2: como señaló @toddsby, alinear elementos es para padre y su valor predeterminado es en realidad estirar . Si desea un valor diferente para el niño, existe la propiedad de alineación propia.
Edición 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
fuente
align-items: stretch;
no es obligatorio ya que es el valor predeterminado. También debe definirse en el padre, no en el hijo.En realidad, siempre que el elemento padre esté posicionado, puede establecer la altura del niño al 100%. Es decir, en caso de que no desee que el padre esté absolutamente posicionado. Déjame explicarte más:
fuente
position:absolute
(que podría interferir con los estilos de un sitio)Mientras no necesite admitir versiones de Internet Explorer anteriores a IE8, puede usar esto
display: table-cell
para lograr esto:HTML:
CSS:
Esto obligará a cada elemento con la
.inner
clase a ocupar toda la altura de su elemento padre.fuente
display: table-cell;
elemento ya no llena la altura de su contenedor? Debo estar perdiendo algo, porque es tu propia pregunta ...?Hice un ejemplo resolviendo tu problema.
Tienes que hacer un envoltorio, flotarlo, luego colocar tu div absoluto y darle una altura del 100%.
HTML
CSS:
Explicación: El .right div está absolutamente posicionado. Eso significa que su ancho y alto, y las positiones superior e izquierda se calcularán basándose en el primer div padre absoluto o en una posición relativa SOLO si las propiedades de ancho o alto se declaran explícitamente en CSS; si no se declaran explícitamente, esas propiedades se calcularán en función del contenedor principal (.right-wrapper).
Por lo tanto, el 100% de la altura del DIV se calculará en función de la altura final del contenedor, y la posición final de la posición .right se calculará en función del contenedor principal.
fuente
.right
contenido de la.left
columna es más corto que el contenido de la columna. Por ejemplo, si está usando esto en un componente en el que la.left
columna tiene contenido de tamaño variable y la columna derecha simplemente muestra una flecha a una página de detalles, entonces esta solución funciona bien. +1 por esoAquí es una forma más simple de lograr eso:
Gracias a @Itay en flotante div, 100% de altura
fuente
Si está preparado para usar un poco de jQuery, ¡la respuesta es simple!
Esto funciona bien para flotar un solo elemento a un lado con una altura del 100% de su elemento primario, mientras que otros elementos flotantes que normalmente se envolverían se mantienen a un lado.
Espero que esto ayude a otros fanáticos de jQuery.
fuente
Este es un ejemplo de código para un sistema de cuadrícula con igual altura.
Arriba está el CSS para div externo
Arriba está el div interno
Espero que esto te ayude
fuente
Esto me ayudo.
Cambie a la derecha: y a la izquierda: para configurar el # ancho interior preferible
fuente
Un caso similar cuando necesita varios elementos secundarios que tienen la misma altura se puede resolver con flexbox:
https://css-tricks.com/using-flexbox/
Establecidos
display: flex;
para elementos primarios yflex: 1;
secundarios, todos tendrán la misma altura.fuente
tratar
mostrar más opciones en: ¿Cómo evita que los padres de elementos flotantes colapsen?
fuente