Acabo de enterarme de una unidad CSS nueva y poco común. vh
y vw
mida el porcentaje de alto y ancho de la ventana gráfica respectivamente.
Miré esta pregunta de Stack Overflow, pero hizo que las unidades se vean aún más similares.
¿Cómo funciona la unidad vw y vh?
La respuesta dice específicamente
vw y vh son un porcentaje del ancho y alto de la ventana, respectivamente: 100vw es el 100% del ancho, 80vw es el 80%, etc.
Esto parece exactamente lo mismo que la %
unidad, que es más común.
En Developer Tools, intenté cambiar los valores de vw / vh a% y viceversa y obtuve el mismo resultado.
¿Hay diferencia entre los dos? Si no, ¿por qué se introdujeron estas nuevas unidades CSS3
?
css
viewport-units
Richard Hamilton
fuente
fuente
Respuestas:
100%
puede ser100%
de la altura de cualquier cosa. Por ejemplo, si tengo un padrediv
que es1000px
alto y un niñodiv
que está en100%
altura, entonces ese niñodiv
podría ser, en teoría, mucho más alto que la altura de la ventana gráfica, o mucho más pequeño que la altura de la ventana gráfica, aunque esodiv
esté establecido en100%
de altura .Si, en cambio, establezco ese elemento secundario
div
en100vh
, entonces solo ocupará100%
la altura de la ventana gráfica , y no necesariamente el padrediv
.fuente
Sé que la pregunta es muy antigua y @Josh Beam abordó la mayor diferencia, pero todavía hay otra:
Supongamos que tiene un
<div>
hijo directo<body>
que desea llenar toda la ventana gráfica, por lo que utilizawidth: 100vw; height: 100vh;
. Todo funciona igual quewidth: 100%; height: 100vh;
hasta que agregue más contenido y aparezca una barra de desplazamiento vertical. Dado que lavw
cuenta para la barra de desplazamiento como parte de la ventana gráfica,width: 100vw;
será un poco más grande quewidth: 100%;
. Esta pequeña diferencia termina agregando una barra de desplazamiento horizontal (requerida para que el usuario vea ese pequeño ancho adicional) y, en consecuencia, la altura también sería un poco diferente en ambos casos.Eso debe tenerse en cuenta al decidir cuál usar, incluso si el tamaño del elemento primario es el mismo que el tamaño de la ventana gráfica del documento.
Ejemplo:
Utilizando
width:100vw;
:Utilizando
width:100%;
:fuente
body { overflow: hidden }
hará que las barras de desplazamiento no se muestren.Gracias por su respuesta y ejemplo de código, @IanC. Me ayudó mucho. Una aclaración: creo que quiso decir "barra de desplazamiento" cuando escribió "barra lateral".
Aquí hay algunas discusiones relacionadas sobre unidades de ventana gráfica que cuentan barras de desplazamiento que también encontré útiles:
¿Por qué vw incluye la barra de desplazamiento como parte de la ventana gráfica?
El uso de 100vw provoca un recorte horizontal cuando hay barras de desplazamiento verticales.
Evite que 100vw cree desplazamiento horizontal
Diferencia entre ancho: 100% y ancho: 100vw?
La especificación W3C para las unidades vw, vh, vmin, vmax (las "longitudes de porcentaje de la ventana gráfica") dice "se supone que las barras de desplazamiento no existen".
Aparentemente, Firefox resta el ancho de la barra de desplazamiento de 100vw, como el comentario de @ Nolonar en Diferencia entre ancho: 100% y ancho: 100vw. observa, citando "¿Puedo usar".
¿Puedo usar , tal vez en tensión con la especificación (?), Dice que todos los navegadores que no sean Firefox actualmente consideran "incorrectamente" que 100vw es el ancho completo de la página, incluida la barra de desplazamiento vertical.
fuente
Las unidades vw (ancho de vista) y vh (alto de vista) son relacionadas con el tamaño del puerto de vista, donde 100vw o vh es el 100% del ancho / alto del puerto de vista.
Por ejemplo, si un puerto de vista tiene un ancho de 1600px, y especifica algo como 2vw, será el equivalente al 2% del ancho del puerto de vista, o 32px.
% unit siempre se basa en el ancho del elemento principal del elemento actual
fuente
Hay una diferencia que no necesariamente se ha planteado. 100vw incluye el ancho de la barra scrool, mientras que 100% no lo incluye. Es una pequeña diferencia, pero importante al hacer diseño.
fuente