Publicidad

rem css w3schools, unidades de medida html css, ¿cuál es la diferencia entre rem y em?, medidas css responsive, Como utilizar em y rem en CSS, ¿Qué es rem y em?, ¿Cuánto equivale un em CSS?

rem y em en css

Son unidades de longitud relativa.

¿Pero relativo a que?
En el caso de em quiere decir que es relativo o toma el tamaño de letra de su elemento padre. Mientras que rem toma el tamaño de letra del elemento raíz (root).

Nota:
Es importante saber que el font-size es una propiedad que se hereda del elemento padre.
Ahora nótese que el elemento raíz del documento html tiene la propiedad font-size en 16px esto es un estándar en todos los navegadores.

A partir de lo dicho anteriormente comprendamos que:

– Cualquier elemento o párrafo que «no tenga un tamaño diferente al establecido por el navegador»  tendrá el mismo tamaño de letra del elemento raíz root.
– Los elementos como <h1>,<h2>, etc tienen un tamaño predeterminado diferente.

Para los siguientes ejemplos configuramos el tamaño de letra a 16px en el elemento <html> (esto es redundante; pero para mayor comprensión es mejor dejarlo así).

CSS

html {
 font-size: 16px;
 color: #00cfff;
 background: black;
}

Podríamos hacer los ejemplos definiendo el font-size en el elemento raíz root; pero la verdad es que hice todos los ejemplos con el elemento <html>😅😅😅; bueno si usáramos root quedaría de la siguiente forma.

CSS

root {
  font-size: 40px;
}

Ejemplos de em

Ejemplo #1

 diferencia entre em y rem, rem css, unidades absolutas css
Tenemos un elemento <h1> que tiene de forma predeterminada un font-size de 2em, bueno a este elemento lo redefinimos con 3em, de esta forma cuando comentamos el font-size veremos que regresa al tamaño predeterminado dado.

Veamos la siguiente regla para entender la equivalencia de valores:

1em = 16px entonces
2em = 16px + 16px = 32px
3em = 16px + 16px + 16px = 48px

HTML

<html>
  <body>
    <h1>
      Título h1
    </h1>
  </body>
</html>

CSS

h1 {
  font-size: 3em;
  color: #ff2571;
}

Hagamos énfasis en que la etiqueta <h1> toma el tamaño de letra del <html> porque en este caso el <html> es su elemento padre directamente. Si esta etiqueta <h1> estuviera dentro de un <div> con un font-size diferente otro sería el resultado.

Ejemplo #2


En este ejemplo creamos un <div> con una clase llamada div-padre y dentro de este elemento creamos otro <div> con la clase div-hijo-em.

Publicidad

HTML

<html>
  <body>
    <div class="div-padre">
      Contenedor o elemento padre de "div-hijo-em".
      <div class="div-hijo-em">
        Elemento hijo del "div-padre".
      </div>
    </div>
  </body>
</html>

CSS

.div-padre {
    font-size: 14px;
    color: #ff7235;
}

.div-hijo-em {
    font-size: 1em;
    color: #ff8f5f;
}

Ahora podemos ver que el elemento hijo div-hijo-em tiene un font-size de 1em, si quitamos el font-size vemos que el tamaño se mantiene porque el elemento hereda el tamaño del elemento padre que en este caso tiene un font-size de 14px.

Entonces para este caso en especifico hemos definimos el elemento padre con font-size  de 14px lo cual indica que:

1em = 14px entonces
2em = 14px + 14px = 28px

Podemos comprobar estos valores cambiando el valor de «div-hijo-em» de 1em a 2em o más.
También podemos ir cambiando el valor del div-padre mientras que comentamos el font-size del «div-hijo-em» para ver como hereda el valor del elemento padre.

Ejemplos de rem

Ejemplo #1

Creamos un nuevo <div> y dentro de este creamos un <h2> con la clase div-rem le damos un font-size de 1rem y vemos que toma el maño del elemento <html>. Entonces podemos confirmar que, si «un elemento cualquiera tiene un font-size con valor 1rem toma el tamaño de letra heredada directamente desde el elemento raíz root»  o en este caso desde el elemento <html> .

HTML

<html>
  <body>
    <div>
      <h2 class="div-rem">
        Elemento h2 que obtiene el tamaño de letra del &lt;html&gt.
      </h2>
    </div>
  </body>
</html>

CSS

.div-rem {
    font-size: 1rem;
    color: #00ff76;
}

Ejemplo #2


Último y más sencillo ejemplo, aquí simplemente colocamos un texto dentro del <html> y listo.

HTML

<html>
  <body>
    Texto dentro del elmento &lt;html&gt.
  </body>
</html>

Esta claro que este toma por defecto el mismo tamaño del <html> y no solo eso también esta heredando el color de texto.

Vídeo del archivo con todos los ejemplos

Aquí les dejo el enlace de este archivo con los 3 ejemplos.

Conclusión:
Podemos concluir afirmado que realmente rem hereda el font-size del elemento raíz root; mientras que em hereda el font-size del elemento raíz si y solo si este no se encuentra dentro de un contenedor o elemento padre definido con otro valor.

Publicidad