Guía sobre las nuevas unidades CSS dvh, svh y lvh para mejorar el diseño web

Descubre cómo las unidades CSS dvh, svh y lvh transforman el diseño web responsivo, adaptándose a los cambios del entorno de usuario.

Zaragoza Ciudad
3 de abril de 2025
Compartir en:

Índice

Introducción a las unidades CSS dinámicas

El mundo del diseño web está en constante evolución, y uno de los avances más significativos en CSS reciente ha sido la introducción de las unidades de viewport dinámicas: dvh, svh y lvh. Estas unidades representan una solución elegante a uno de los desafíos más persistentes en el diseño web responsivo: adaptar contenido a las dimensiones variables de pantalla, especialmente cuando elementos de interfaz como barras de navegación y herramientas aparecen o desaparecen.

Durante años, los desarrolladores web han luchado con las limitaciones de la unidad vh (viewport height), que si bien revolucionó la forma en que diseñamos interfaces, presentaba inconsistencias importantes, particularmente en dispositivos móviles. El problema principal: las barras de herramientas móviles que aparecen y desaparecen alteraban dramáticamente el espacio disponible, causando saltos visuales y experiencias de usuario subóptimas.

En respuesta a esta problemática, el World Wide Web Consortium (W3C) introdujo estas nuevas unidades dinámicas que prometen transformar nuestra aproximación al diseño web responsive. Su implementación permite crear interfaces más fluidas, adaptativas y predecibles en todos los dispositivos y contextos de visualización.

¿Qué son las unidades dvh, svh y lvh?

Para entender el valor que aportan estas nuevas unidades, primero debemos comprender qué significan y cómo funcionan:

  • lvh (large viewport height): Representa el 1% de la altura del viewport en su estado más grande, generalmente cuando las barras de herramientas del navegador están ocultas o minimizadas.
  • svh (small viewport height): Equivale al 1% de la altura del viewport en su estado más pequeño, cuando elementos de interfaz como barras de herramientas, búsqueda o navegación están completamente visibles.
  • dvh (dynamic viewport height): La joya de la corona, esta unidad ajusta dinámicamente su valor entre los estados mínimo y máximo del viewport, adaptándose en tiempo real a los cambios en la interfaz.

Estas unidades complementan al tradicional vh, que representa simplemente el 1% de la altura del viewport sin considerar cambios dinámicos. La diferencia crucial: mientras vh puede causar saltos visuales cuando aparecen o desaparecen elementos de interfaz, dvh, svh y lvh proporcionan mayor estabilidad visual y predecibilidad.

Por ejemplo, supongamos que estamos diseñando un hero banner que debe ocupar exactamente la pantalla. Con vh tradicional, si un usuario toca la pantalla en móvil y aparece la barra de navegación inferior, el contenido sufrirá un “salto” visual. Con dvh, el elemento se ajustará suavemente, manteniendo una experiencia visual coherente.

Importancia de las unidades en el diseño web mobile

El diseño web mobile presenta desafíos únicos que estas nuevas unidades ayudan a resolver de manera elegante:

  • Barras de navegación dinámicas: En dispositivos móviles, las barras de navegación y herramientas pueden aparecer o desaparecer según la interacción del usuario, alterando el espacio disponible.
  • Experiencia visual consistente: Los usuarios esperan fluidez y consistencia visual; los saltos bruscos de contenido pueden afectar negativamente la experiencia.
  • Diversidad de dispositivos: La variedad de tamaños de pantalla y comportamientos de interfaz en el ecosistema móvil exige soluciones más adaptables.

En el contexto mobile, estas unidades permiten crear diseños que responden inteligentemente a cambios en la interfaz de usuario sin requerir complejas soluciones JavaScript. Por ejemplo, un formulario de registro que utiliza dvh para su altura se adaptará automáticamente cuando aparezca el teclado virtual, manteniendo siempre visible el botón de envío, mejorando significativamente la usabilidad.

La importancia de estas unidades se amplifica con la tendencia hacia interfaces inmersivas y experiencias app-like en la web. Sitios que utilizan diseño a pantalla completa, navegación basada en gestos, y experiencias interactivas ricas se benefician enormemente de la estabilidad visual que ofrecen dvh, svh y lvh.

Ventajas de usar dvh, svh y lvh

La introducción de estas unidades dinámicas no es simplemente una mejora técnica; representa un cambio paradigmático en cómo abordamos el diseño web responsivo. A continuación, exploramos las ventajas más significativas que ofrecen estas nuevas herramientas CSS:

Responsive y adaptabilidad avanzada

El principal beneficio de estas unidades es su capacidad para proporcionar una adaptabilidad superior que trasciende el diseño responsivo tradicional:

  • Adaptación en tiempo real: A diferencia de vh tradicional, dvh se ajusta dinámicamente en respuesta a cambios en la interfaz del usuario, como barras de herramientas que aparecen o desaparecen, proporcionando una experiencia visual más fluida.
  • Control preciso sobre el diseño: La combinación de svh, lvh y dvh permite a los desarrolladores implementar lógicas condicionales directamente en CSS para responder a diferentes estados del viewport.
  • Menos dependencia de JavaScript: Muchas soluciones que antes requerían detección de cambios en la altura del viewport con JavaScript ahora pueden implementarse puramente con CSS, reduciendo la complejidad y mejorando el rendimiento.

Consideremos un caso práctico: una aplicación web que incluye un panel de chat en la parte inferior de la pantalla. Con vh tradicional, cuando aparece el teclado virtual en dispositivos móviles, parte del contenido podría quedar oculto. Utilizando dvh, el elemento se ajusta automáticamente, asegurando que los controles críticos permanezcan siempre visibles.

Esta adaptabilidad avanzada es particularmente valiosa para:

  • Interfaces de aplicaciones web progresivas (PWAs)
  • Experiencias de navegación inmersivas
  • Formularios y procesos de conversión críticos
  • Contenido interactivo que requiere estabilidad visual

La responsividad ya no se limita a adaptarse a diferentes tamaños de pantalla, sino que ahora puede responder dinámicamente a cómo los usuarios interactúan con esas pantallas.

Compatibilidad y limitaciones actuales

Como toda tecnología emergente, es importante entender el panorama actual de compatibilidad y las limitaciones existentes:

  • Soporte en navegadores: Actualmente, las unidades dvh, svh y lvh son compatibles con la mayoría de los navegadores modernos, incluyendo Chrome (desde la versión 108), Safari (desde iOS 15.4) y Firefox (desde la versión 101). Esta adopción relativamente amplia facilita su implementación en proyectos comerciales.
  • Estrategias de fallback: Para navegadores más antiguos, es recomendable implementar estrategias de fallback utilizando combinaciones de vh con otros enfoques como unidades de porcentaje o cálculos basados en media queries.

Entre las limitaciones más notables se encuentran:

  • Inconsistencias entre navegadores: Pueden existir ligeras diferencias en cómo cada navegador interpreta exactamente cuándo y cómo ajustar estas unidades dinámicas.
  • Rendimiento: En algunos dispositivos de gama baja, el recálculo constante que implica dvh puede afectar el rendimiento, especialmente en diseños complejos.
  • Optimización para múltiples orientaciones: La transición entre orientaciones de dispositivo puede requerir ajustes adicionales para mantener la coherencia visual.

Es importante destacar que estas limitaciones no deben desalentar su adopción; más bien, deben informar cómo implementamos estas unidades. Por ejemplo, una estrategia común es establecer dimensiones base con unidades convencionales y luego mejorar progresivamente con dvh, svh y lvh:

Para implementar un enfoque de mejora progresiva, podemos utilizar una estructura como:

.elemento-altura-completa {
    height: 100%; /* Fallback básico */
    height: 100vh; /* Para navegadores que soportan vh pero no dvh */
    height: 100dvh; /* Para navegadores modernos con soporte completo */
}

Esta aproximación garantiza que incluso en navegadores sin soporte para las nuevas unidades, los usuarios reciban una experiencia aceptable, mientras que en navegadores modernos disfrutan de los beneficios completos de la adaptabilidad dinámica.

Implementación práctica de css dvh, svh y lvh

Pasemos de la teoría a la práctica. ¿Cómo podemos implementar efectivamente estas unidades en nuestros proyectos de diseño web? A continuación, exploramos ejemplos concretos y escenarios donde dvh, svh y lvh brillan especialmente.

Ejemplos de código y diseño en acción

Veamos algunos casos de uso común con ejemplos de código que ilustran la implementación efectiva de estas unidades:

1. Hero section de altura completa que se adapta dinámicamente

.hero-section {
    /* Enfoque tradicional con limitaciones */
    height: 100vh;
    
    /* Enfoque mejorado con unidades dinámicas */
    height: 100dvh;
    
    /* Estrategia de fallback completa */
    height: 100vh; /* Fallback para navegadores sin soporte */
    height: 100dvh;
}

Con esta implementación, el hero section se ajustará dinámicamente cuando aparezcan o desaparezcan barras de herramientas del navegador, proporcionando una experiencia visual más estable.

2. Modal o popup que mantiene controles críticos visibles

.modal-container {
    /* Asegura que el modal siempre tenga al menos un mínimo de altura visible */
    max-height: 90svh;
    
    /* Establece un contenedor con desplazamiento para el contenido */
    .modal-content {
        overflow-y: auto;
        max-height: 75svh;
    }
    
    /* Mantiene los botones de acción siempre visibles */
    .modal-actions {
        position: sticky;
        bottom: 0;
        padding: 1rem;
        background: white;
    }
}

Este patrón garantiza que los botones de acción críticos (como “Guardar” o “Cancelar”) permanezcan siempre visibles, incluso cuando el teclado virtual reduce el espacio disponible.

3. Layout flexible con secciones de proporción controlada

.page-layout {
    min-height: 100lvh;
    display: flex;
    flex-direction: column;
    
    .header {
        height: 10dvh;
    }
    
    .content {
        flex: 1;
        overflow-y: auto;
    }
    
    .footer {
        height: 15dvh;
    }
}

Este layout asegura proporciones consistentes entre componentes, independientemente de cambios en la interfaz. El área de contenido se expande dinámicamente mientras los elementos de cabecera y pie mantienen proporciones estables.

4. Implementación avanzada con CSS Variables para mayor flexibilidad

:root {
    --header-height: 60px;
    --footer-height: 80px;
    --available-height: calc(100dvh - var(--header-height) - var(--footer-height));
}

.main-content {
    height: var(--available-height);
    overflow-y: auto;
}

@media (max-height: 600px) {
    :root {
        --header-height: 40px;
        --footer-height: 50px;
    }
}

Este enfoque combina variables CSS con unidades dinámicas para crear layouts altamente adaptables que responden no solo a cambios en el viewport sino también a diferentes contextos de diseño.

Mejores prácticas para un uso eficaz

Para aprovechar al máximo estas unidades, recomendamos seguir estas mejores prácticas desarrolladas a partir de experiencias reales de implementación:

  • Implementar estrategias de fallback: Siempre proporcione alternativas para navegadores que no soportan estas unidades.
  • Combinar con otras técnicas CSS modernas: Flex, Grid, y variables CSS complementan perfectamente estas unidades para crear layouts verdaderamente adaptables.
  • Testear en múltiples dispositivos: El comportamiento puede variar sutilmente entre sistemas operativos y navegadores móviles.
  • Uso contextual apropiado:
    • Use dvh cuando necesite adaptación dinámica continua.
    • Use svh cuando diseñe para el “peor caso” (interfaz con todas las barras visibles).
    • Use lvh cuando diseñe para el “mejor caso” (interfaz limpia sin elementos adicionales).
  • Considerar el rendimiento: En páginas con muchos elementos utilizando dvh, monitoree el rendimiento, especialmente en dispositivos móviles de gama media-baja.

La implementación de media queries específicas puede refinar aún más el comportamiento de estas unidades:

/* Ajuste específico para orientación */
@media (orientation: landscape) {
    .hero-section {
        height: 100lvh;
    }
}

@media (orientation: portrait) {
    .hero-section {
        height: 90dvh;
    }
}

Una estrategia particularmente efectiva consiste en usar dvh para elementos críticos que deben adaptarse dinámicamente, mientras se mantiene vh para elementos donde la estabilidad visual es menos crítica o donde pequeños saltos visuales no afectan la experiencia del usuario.

¿Cómo funcionan las nuevas unidades CSS en diferentes contextos?

Entender cómo estas unidades se comportan en diferentes contextos es fundamental para implementarlas efectivamente en nuestros proyectos. Veamos algunos escenarios específicos y cómo las unidades dinámicas responden a ellos.

Comportamiento en dispositivos móviles vs. desktop

El comportamiento de estas unidades varía significativamente entre entornos desktop y móviles, reflejando los diferentes desafíos que presentan:

En entornos desktop:

  • La diferencia entre lvh y svh suele ser menor, principalmente afectada por la aparición/desaparición de barras de herramientas del navegador.
  • El valor de dvh tiende a cambiar con menos frecuencia, ya que las interfaces desktop son generalmente más estables.
  • El impacto visual de estos cambios es proporcionalmente menor debido al mayor tamaño de pantalla.

En entornos móviles:

  • La diferencia entre lvh y svh puede ser sustancial (hasta un 30-40% en algunos casos) debido a elementos como barra de direcciones, controles de navegación y teclado virtual.
  • El valor de dvh cambia más frecuentemente en respuesta a las interacciones del usuario.
  • El impacto visual es más pronunciado, haciendo que la implementación correcta sea crítica para la experiencia del usuario.

Esta distinción motiva estrategias de implementación diferentes según el contexto:

/* Estrategia adaptativa según dispositivo */
.full-height-element {
    /* Base para todos los dispositivos */
    height: 100vh;
    height: 100dvh;
}

/* Ajustes específicos para móvil */
@media (max-width: 768px) {
    .critical-controls {
        /* Garantizar visibilidad de controles críticos */
        bottom: 5svh;
        padding-bottom: env(safe-area-inset-bottom, 1rem);
    }
}

Esta aproximación garantiza que los elementos críticos permanezcan visibles incluso en las condiciones más restrictivas del viewport móvil.

Casos de uso avanzados y soluciones creativas

Más allá de los usos básicos, estas unidades permiten soluciones creativas para desafíos complejos de diseño:

1. Interfaces de tipo aplicación con navegación persistente

.app-container {
    height: 100dvh;
    display: grid;
    grid-template-rows: auto 1fr auto;
}

.app-header {
    position: sticky;
    top: 0;
    height: 10dvh;
}

.app-content {
    overflow-y: auto;
}

.app-nav {
    position: sticky;
    bottom: 0;
    height: 15dvh;
    max-height: 100px;
}

Esta estructura crea una experiencia similar a una aplicación nativa, con áreas de navegación persistentes que se adaptan dinámicamente al espacio disponible.

2. Carruseles y galerías adaptativas

.adaptive-carousel {
    height: 50dvh;
    
    @media (min-width: 1024px) {
        height: 70vh; /* En desktop, más espacio vertical disponible */
    }
    
    .carousel-slide {
        height: 100%;
        object-fit: cover;
    }
}

Este patrón garantiza que los carruseles mantengan proporciones visuales atractivas independientemente del dispositivo o cambios en la interfaz.

3. Formularios accesibles que responden al teclado virtual

.smart-form {
    min-height: 80dvh;
    display: flex;
    flex-direction: column;
    
    .form-fields {
        flex: 1;
        overflow-y: auto;
    }
    
    .submit-container {
        padding: 1rem;
        position: sticky;
        bottom: 0;
        background: white;
        box-shadow: 0 -2px 10px rgba(0,0,0,0.1);
    }
}

Esta estructura asegura que los formularios largos permanezcan utilizables incluso cuando el teclado virtual reduce significativamente el espacio disponible, manteniendo el botón de envío siempre accesible.

¿Cuándo debería elegir dvh sobre vh en mi proyecto?

Esta es una pregunta crucial que muchos desarrolladores se plantean al aprender sobre estas nuevas unidades. La decisión entre utilizar dvh o mantenerse con vh tradicional depende de varios factores que debemos considerar cuidadosamente.

Análisis comparativo para toma de decisiones

Para ayudar en la toma de decisiones, consideremos las siguientes situaciones y recomendaciones:

Elija dvh cuando:

  • La experiencia móvil es prioritaria para su proyecto
  • La estabilidad visual durante la interacción es crítica (formularios, procesos de check-out)
  • Trabaja con layouts de tipo aplicación donde los elementos deben mantener proporciones consistentes
  • Desarrolla interfaces inmersivas donde los saltos visuales romperían la experiencia
  • Los elementos críticos de UI deben permanecer visibles independientemente de cambios en el viewport

Manténgase con vh cuando:

  • Necesita máxima compatibilidad con navegadores antiguos
  • Trabaja en proyectos donde el rendimiento es extremadamente crítico
  • Los saltos visuales no afectan significativamente la experiencia de usuario
  • La audiencia es predominantemente desktop
  • Implementa animaciones complejas donde el comportamiento de dvh podría causar recálculos excesivos

En muchos casos, una estrategia híbrida proporciona los mejores resultados:

/* Estrategia híbrida con enfoque en UX móvil */
.hero-banner {
    /* Base universal con vh */
    height: 100vh;
    
    /* Mejora para navegadores modernos */
    @supports (height: 100dvh) {
        height: 100dvh;
    }
}

/* Enfoque específico para dispositivos */
@media (max-width: 768px) {
    .hero-content {
        /* Asegura visibilidad en dispositivos móviles */
        padding-bottom: max(5vh, 2rem);
    }
}

Este enfoque progresivo asegura una buena experiencia base para todos los usuarios, mientras proporciona mejoras para aquellos con navegadores que soportan las nuevas unidades.

Consideraciones de rendimiento y accesibilidad

Al implementar estas unidades, debemos considerar también el impacto en rendimiento y accesibilidad:

Rendimiento:

  • El cálculo continuo de dvh puede impactar el rendimiento en páginas complejas con muchos elementos utilizando esta unidad
  • En dispositivos de gama baja, los recálculos frecuentes pueden causar micro-jank (pequeños tirones visuales)
  • Considere limitar el uso de dvh a elementos críticos en páginas de alto rendimiento

Accesibilidad:

  • Las unidades dinámicas pueden mejorar la accesibilidad al mantener controles críticos visibles
  • Para usuarios con configuraciones de zoom específicas, combinar dvh con unidades relativas (em, rem) puede proporcionar mejor experiencia
  • Asegúrese de que el contenido permanezca accesible cuando los usuarios modifiquen el tamaño del texto o utilicen zoom

Una implementación consciente considera estos factores:

/* Implementación con conciencia de rendimiento y accesibilidad */
.critical-container {
    /* Uso estratégico de dvh solo donde es más beneficioso */
    height: 100dvh;
    
    /* Asegura que el contenido siempre sea accesible */
    overflow-y: auto;
    
    /* Considera tamaños de texto variables */
    padding: 1rem;
    padding-bottom: max(1rem, 3dvh);
}

/* Evita dvh en elementos que se animan frecuentemente */
.animated-element {
    height: 30vh; /* Usa vh en lugar de dvh para mejor rendimiento en animaciones */
    transition: transform 0.3s ease;
}

Este equilibrio entre funcionalidad, rendimiento y accesibilidad es clave para implementaciones exitosas en proyectos del mundo real.

El futuro del diseño web con unidades dinámicas

Las unidades dvh, svh y lvh son solo el comienzo de una nueva era en el diseño web responsivo. A medida que estas unidades ganan adopción, estamos viendo emerger nuevos patrones de diseño y enfoques que aprovechan su capacidad de adaptación dinámica.

Tendencias emergentes y evolución de estándares

Varias tendencias están tomando forma a medida que diseñadores y desarrolladores exploran el potencial de estas unidades:

  • Diseños con conciencia contextual: Interfaces que responden no solo al tamaño del dispositivo sino al contexto completo de visualización, incluyendo controles del sistema, preferencias de usuario y condiciones ambientales.
  • Micro-adaptaciones: Ajustes sutiles en tiempo real que optimizan la experiencia del usuario sin interrupciones visibles, creando experiencias más fluidas.
  • Integración con Container Queries: La combinación de unidades dinámicas con container queries está permitiendo layouts con múltiples niveles de adaptabilidad.
  • Experiencias inmersivas híbridas: Diseños que combinan elementos de interfaz de usuario tradicionales con experiencias inmersivas de pantalla completa que se adaptan perfectamente a cualquier entorno.

A nivel de estándares, podemos anticipar:

  • Mayor refinamiento de estas unidades para abordar casos extremos y comportamientos específicos de dispositivo
  • Nuevas unidades que aborden otros aspectos dinámicos del viewport
  • Mejor integración con API de dispositivo para crear experiencias más contextualmente relevantes

Un enfoque proactivo para implementar estas tendencias:

/* Diseño con conciencia contextual */
@media (hover: none) and (pointer: coarse) {
    /* Optimizaciones para dispositivos táctiles */
    .touch-ui {
        --spacing: max(1rem, 3dvh);
        padding: var(--spacing);
    }
    
    .interactive-element {
        min-height: 48px; /* Asegurar área de toque mínima */
        margin-bottom: 2dvh;
    }
}

/* Micro-adaptaciones con CSS Variables combinadas */
:root {
    --dynamic-spacing: clamp(1rem, 3dvh, 3rem);
    --content-width: min(90vw, 1200px);
}

.adaptive-container {
    width: var(--content-width);
    padding: var(--dynamic-spacing);
}

Integración con otras tecnologías web modernas

El verdadero poder de las unidades dinámicas se revela cuando se combinan con otras tecnologías web modernas:

1. CSS Grid y Flexbox

.dynamic-grid {
    display: grid;
    grid-template-rows: min-content minmax(50dvh, 1fr) min-content;
    height: 100dvh;
    
    .grid-header { grid-row: 1; }
    .grid-content { 
        grid-row: 2;
        overflow-y: auto;
    }
    .grid-footer { grid-row: 3; }
}

Esta combinación permite crear layouts extremadamente adaptables que responden tanto a cambios en el contenido como en el contexto de visualización.

2. CSS Scroll Snap y efectos de parallax

.snap-container {
    height: 100dvh;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
    
    .snap-section {
        height: 100dvh;
        scroll-snap-align: start;
        position: relative;
        
        .parallax-bg {
            position: absolute;
            height: 120dvh; /* Proporciona espacio para efecto parallax */
            width: 100%;
            object-fit: cover;
            transform: translateY(calc(var(--scroll-y, 0) * -0.2));
        }
    }
}

Este patrón crea experiencias de desplazamiento inmersivas que mantienen coherencia visual independientemente de los cambios en el viewport.

3. Motion UI y animaciones contextuales

.animated-entrance {
    --entrance-distance: 5dvh;
    
    opacity: 0;
    transform: translateY(var(--entrance-distance));
    
    &.animate {
        opacity: 1;
        transform: translateY(0);
        transition: transform 0.4s ease-out, opacity 0.3s ease;
    }
}

Las animaciones basadas en unidades dinámicas pueden crear efectos visuales que se escalan apropiadamente según el contexto de visualización.

A medida que estas tecnologías continúan evolucionando, estamos presenciando el surgimiento de experiencias web más refinadas, contextuales y adaptativas que van más allá del diseño responsive tradicional, acercándose a una verdadera responsividad dinámica que considera el contexto completo de la experiencia del usuario.

La integración de todas estas tecnologías está impulsando una nueva era de diseño web donde las fronteras entre aplicaciones nativas y experiencias web continúan difuminándose, permitiendo crear interfaces que se adaptan perfectamente a cualquier contexto, dispositivo o preferencia de usuario.

Te puede interesar