Unidades Relativas en CSS

Las unidades relativas en CSS permiten que los tamaños y posiciones de los elementos se adapten de manera flexible a diferentes condiciones, como el tamaño del texto o la vista del navegador. A diferencia de las unidades absolutas (como píxeles), las unidades relativas ofrecen más control y adaptabilidad.

1. Unidades em

  1. Definición: La unidad em es relativa al tamaño de la fuente del elemento padre. Si el tamaño de fuente del elemento padre es de 16 píxeles, 1em equivale a 16 píxeles.
  2. Uso Típico:

Tamaño de fuente: Ajusta el tamaño del texto en relación con el tamaño de fuente del elemento padre.

.texto {
    font-size: 1.5em; /* 1.5 veces el tamaño de fuente del elemento padre */
}

Espaciado: Se utiliza para márgenes y rellenos relativos al tamaño de fuente.

.contenido {
    margin: 2em; /* 2 veces el tamaño de fuente del elemento padre */
}

2. Unidades rem

  • Definición: La unidad rem es relativa al tamaño de fuente del elemento raíz (<html>). Es útil para mantener una escala uniforme en todo el documento, ya que siempre se basa en un tamaño de fuente consistente.
  • Uso Típico:

Tamaño de fuente: Se usa para definir tamaños de fuente en todo el documento basándose en el tamaño de fuente del elemento raíz.

html {
    font-size: 16px; /* Base para rem */
}

.texto {
    font-size: 1.25rem; /* 1.25 veces el tamaño de fuente del elemento raíz (20px) */
}

Espaciado: Utilizado para márgenes y rellenos basados en el tamaño de fuente raíz.

.contenido {
    padding: 2rem; /* 2 veces el tamaño de fuente del elemento raíz */
}

3. Unidades vw (Viewport Width)

  • Definición: La unidad vw es relativa al ancho del viewport (ventana de visualización). 1vw equivale al 1% del ancho del viewport.
  • Uso Típico:

Tamaño de elementos: Utilizado para ajustar elementos de manera flexible en relación con el ancho de la ventana.

.ancho-completo {
    width: 50vw; /* 50% del ancho del viewport */
}

Espaciado y fuentes: Puede ser usado para márgenes, padding y tamaños de fuente.

.titulo {
    font-size: 5vw; /* 5% del ancho del viewport */
}

4. Unidades vh (Viewport Height)

  • Definición: La unidad vh es relativa a la altura del viewport. 1vh equivale al 1% de la altura del viewport.
  • Uso Típico:

Altura de elementos: Se usa para definir la altura de los elementos en relación con la altura de la ventana.

.altura-completa {
    height: 100vh; /* 100% de la altura del viewport */
}

Espaciado y fuentes: Se puede utilizar para definir márgenes, rellenos y tamaños de fuente.

.subtitulo {
    font-size: 3vh; /* 3% de la altura del viewport */
}

5. Comparación y Uso Combinado

  • em: Útil para ajustar tamaños y espaciados relativos al contexto de tamaño de fuente del elemento padre, ideal para diseño modular.
  • rem: Proporciona consistencia en todo el documento basada en el tamaño de fuente raíz, útil para mantener escalas uniformes.
  • vw: Ideal para ajustar tamaños de elementos y fuentes en relación con el ancho del viewport, útil en diseños fluidos.
  • vh: Perfecto para ajustar tamaños y espaciados en relación con la altura del viewport, útil para diseños de altura completa.

Ejemplo Completo

Aquí tienes un ejemplo que muestra cómo usar estas unidades para un diseño adaptable:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Unidades Relativas en CSS</title>
    <style>
        html {
            font-size: 16px; /* Tamaño de fuente raíz */
        }
        
        .container {
            width: 80vw; /* 80% del ancho del viewport */
            height: 50vh; /* 50% de la altura del viewport */
            background-color: lightcoral;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .text {
            font-size: 2rem; /* 2 veces el tamaño de fuente raíz */
            margin: 1em; /* 1 vez el tamaño de fuente del elemento padre */
        }
    </style>
</head>
<body>
    <div class="container">
        <p class="text">Texto Adaptable</p>
    </div>
</body>
</html>
Facebook
Twitter
LinkedIn

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *