Tengo un diseño con dos columnas: una izquierda div
y una derecha div
.
El derecho div
tiene un gris background-color
, y necesito que se expanda verticalmente dependiendo de la altura de la ventana del navegador del usuario. En este momento, background-color
termina en la última pieza de contenido en eso div
.
He intentado height:100%
, min-height:100%;
, etc.
height
propiedad CSS con valores porcentuales: stackoverflow.com/a/31728799/3597276Respuestas:
Hay un par de unidades de medida CSS 3 llamadas:
Viewport-Porcentaje (o Viewport-Relativa) Longitudes
¿Qué son las longitudes de porcentaje de ventana gráfica?
De la Recomendación de Candidato W3 vinculada arriba:
Estas unidades son
vh
(altura de ventana),vw
(ancho de ventana),vmin
(longitud mínima de ventana) yvmax
(longitud máxima de ventana).¿Cómo se puede usar para hacer que un divisor llene la altura del navegador?
Para esta pregunta, podemos hacer uso de
vh
:1vh
es igual al 1% de la altura de la ventana gráfica. Es decir,100vh
es igual a la altura de la ventana del navegador, independientemente de dónde se encuentre el elemento en el árbol DOM:HTML
CSS
Esto es literalmente todo lo que se necesita. Aquí hay un ejemplo de JSFiddle de esto en uso.
¿Qué navegadores admiten estas nuevas unidades?
Actualmente, esto es compatible con todos los principales navegadores actualizados, aparte de Opera Mini. Consulte ¿Puedo usar ... para obtener más ayuda?
¿Cómo se puede usar esto con múltiples columnas?
En el caso de la pregunta en cuestión, con un divisor izquierdo y uno derecho, aquí hay un ejemplo de JSFiddle que muestra un diseño de dos columnas que involucra ambos
vh
yvw
.¿Cómo es
100vh
diferente a100%
?Tome este diseño por ejemplo:
La
p
etiqueta aquí está establecida en 100% de altura, pero debido a que contienediv
200 píxeles de altura, el 100% de 200 píxeles se convierte en 200 píxeles, no en el 100% de labody
altura. En su100vh
lugar, usar significa que lap
etiqueta tendrá una altura del 100%body
independientemente de ladiv
altura. ¡Eche un vistazo a este JSFiddle que lo acompaña para ver fácilmente la diferencia!fuente
min-height:100vh
parece funcionar alrededor de esto.Si desea establecer la altura de uno
<div>
o cualquier elemento, también debe establecer la altura de<body>
y<html>
al 100%. Luego puede establecer la altura del elemento con 100% :)Aquí hay un ejemplo:
fuente
html { height: 100%*number of blocks; }
,body { height: 100%;}
,#div { height: 100%/number of blocks; }
. Entonces, si tiene 3 secciones, seráhtml { height: 300%; } body { height: 100%; } #div { height: 33.3% }
Si puede posicionar absolutamente sus elementos,
Lo haría.
fuente
position:relative
y su altura no es el 100% de la ventana gráfica. Se ajustará arriba y abajo a su próximo ancestro relativo o absoluto.Puede usar la unidad de puerto de vista en CSS:
HTML:
CSS:
fuente
* { box-sizing: border-box; }
para evitar que eso suceda.Puede usar
vh
en este caso, que es relativo al 1% de la altura de la ventana gráfica ...Eso significa que si desea cubrir la altura, simplemente use
100vh
.Mira la imagen a continuación que dibujo para ti aquí:
Pruebe el fragmento que creé para usted de la siguiente manera:
fuente
paddings/margins
Todas las demás soluciones, incluida la mejor votada,
vh
son subóptimas en comparación con el modelo flexible. solución del .Con el advenimiento del modelo CSS flex , resolver el problema de la altura del 100% se vuelve muy, muy fácil: usar
height: 100%; display: flex
en el padre, yflex: 1
secundarios. Ocuparán automáticamente todo el espacio disponible en su contenedor.Tenga en cuenta lo simple que son el marcado y el CSS. No hacks de mesa ni nada.
El modelo flexible es compatible con todos los principales navegadores , así como con IE11 +.
Obtenga más información sobre el modelo flexible aquí.
fuente
overflow-y: auto;
puede evitar que "los contenedores excedan la altura original del cuerpo".No mencionas algunos detalles importantes como:
Aquí hay una posibilidad:
Hay muchas variaciones sobre esto dependiendo de qué columnas necesitan ser reparadas y cuáles son líquidas. También puede hacer esto con posicionamiento absoluto, pero generalmente he encontrado mejores resultados (particularmente en términos de navegador cruzado) usando flotantes.
fuente
Esto es lo que funcionó para mí:
Use en
position:fixed
lugar deposition:absolute
, de esa manera, incluso si se desplaza hacia abajo, la división se expandirá hasta el final de la pantalla.fuente
Aquí hay una solución para la altura.
En su uso de CSS:
Para los navegadores que no son compatibles
vh-units
, use modernizr.Agregue este script (para agregar detección
vh-units
)Finalmente, use esta función para agregar la altura de la ventana gráfica
#your-object
si el navegador no admitevh-units
:fuente
100%
funciona de manera diferente para ancho y alto.Cuando lo especifica
width: 100%
, significa "tomar el 100% del ancho disponible del elemento principal o el ancho de la ventana".Cuando especifica
height: 100%
, solo significa "tomar el 100% de la altura disponible del elemento padre". Esto significa que si no especifica una altura en un elemento de nivel superior, la altura de todos los elementos secundarios será la0
altura o la altura del elemento primario, y es por eso que debe establecer el elemento superior para tener unamin-height
altura de ventana.Siempre especifico que el cuerpo tenga una altura mínima de 100vh y facilita el posicionamiento y los cálculos,
fuente
Agregue
min-height: 100%
y no especifique una altura (o póngala en auto). Realmente hizo el trabajo por mí:fuente
100vw === 100% del ancho de la ventana gráfica.
100vh === 100% de la altura de la ventana gráfica.
Si desea establecer el
div
ancho o la altura al 100% del tamaño de la ventana del navegador, debe usar:Para ancho:
100vw
Para la altura:
100vh
O si desea establecer un tamaño más pequeño, use la
calc
función CSS . Ejemplo:fuente
Hay varios métodos disponibles para configurar la altura de a
<div>
al 100%.Método (A):
Método (B) usando vh:
Método (c) usando caja flexible:
fuente
Esto funcionó para mí:
Tomado de esta página .
fuente
La manera más simple es hacerlo así.
fuente
Tratar de establecer
height:100%
enhtml
ybody
Y si desea 2 divisiones de altura, use o establezca la
display:flex
propiedad del elemento primario .fuente
Incluso con todas las respuestas aquí, me sorprendió descubrir que ninguna realmente resolvió el problema. Si usé
100vh
height
/min-height
, el diseño se rompió cuando el contenido era más largo que una página. Si en su lugar usé100%
height
/min-height
, el diseño se rompió cuando el contenido era menor que la altura de la página.La solución que encontré, que resolvió ambos casos, fue combinar las dos respuestas principales:
fuente
Simplemente use la unidad "vh" en lugar de "px", que significa altura del puerto de vista.
fuente
Los elementos de bloque consumen el ancho completo de su padre, por defecto.
Así es como cumplen con sus requisitos de diseño, que es apilar verticalmente.
Este comportamiento, sin embargo, no se extiende a la altura.
Por defecto, la mayoría de los elementos son la altura de su contenido (
height: auto
).A diferencia del ancho, debe especificar una altura si desea espacio adicional.
Por lo tanto, tenga en cuenta estas dos cosas:
fuente
Aquí hay algo que no es exactamente como lo que tenía en respuestas anteriores, pero podría ser útil para algunos:
https://jsfiddle.net/newdark/qyxkk558/10/
fuente
Use CSS de FlexBox
Flexbox es perfecto para este tipo de problema. Si bien es conocido principalmente por distribuir contenido en dirección horizontal, Flexbox realmente funciona igual de bien para problemas de diseño vertical. Todo lo que tiene que hacer es envolver las secciones verticales en un contenedor flexible y elegir cuáles desea expandir. Ocuparán automáticamente todo el espacio disponible en su contenedor.
fuente
Una de las opciones es usar la tabla CSS. Tiene una gran compatibilidad con el navegador e incluso funciona en Internet Explorer 8.
JSFiddle Ejemplo
fuente
Prueba esto: probado:
Edición: actualización 2020:
Puedes usar
vh
ahora:fuente
Puedes usar
display: flex
yheight: 100vh
fuente
Debe hacer dos cosas, una es establecer la altura al 100% que ya hizo. En segundo lugar se establece la posición en absoluto. Eso debería hacer el truco.
Fuente
fuente
vh
lugar.vh
si planea usar un diseño receptivo en dispositivos móviles.Pruebe el siguiente CSS:
fuente
En realidad, lo que mejor me funcionó fue usar la
vh
propiedad.En mi aplicación React, quería que el div coincidiera con la página alta incluso cuando se cambiaba el tamaño. Lo intenté
height: 100%;
,overflow-y: auto;
pero ninguno de ellos funcionó cuando configurarloheight:(your percent)vh;
funcionó según lo previsto.Nota: si está utilizando relleno, esquinas redondeadas, etc., asegúrese de restar esos valores del
vh
porcentaje de su propiedad o agrega altura adicional y hace que aparezcan barras de desplazamiento. Aquí está mi muestra:fuente
box-sizing: border-box;
supere esto, significa que el tamaño del borde también se tiene en cuenta al calcular el tamaño (ancho y alto) del elemento.fuente
Si usa
position: absolute;
y jQuery, podría usarfuente
HTML
CSS
fuente
widht
(cerca del final)