Familiarizarse con Initial | Programar Plus

Si alguien se me acercara el otro día y me preguntara cuál es la diferencia entre inherit y initial Es posible que haya respondido:

“¿Qué, hay una diferencia?”

He estado escribiendo CSS durante más de diez años, pero de alguna manera he escapado a comprender qué es exactamente initial es o hace. Llámalo ignorancia, pereza o suerte, pero inherit me ha ayudado y nunca pensé en mirar hacia arriba cuando initial podría usarse en su lugar. Entonces, esta publicación compartirá algunas de las cosas que aprendí.

Qué initial medio

En primer lugar, la especificación nos ayuda a comprender la diferencia entre una palabra clave inicial y un valor inicial.

  • Palabra clave inicial: Si el valor en cascada de una propiedad es la palabra clave inicial, el valor inicial de la propiedad se convierte en su valor especificado.
  • Valor inicial: Cada propiedad tiene un valor inicial, definido en la tabla de definición de propiedades. Si la propiedad no es una propiedad heredada y la cascada no da como resultado un valor, entonces el valor especificado de la propiedad es su valor inicial.

Umm, está bien. Ejecuté esas definiciones a través de Google Translate (¡bromeando!) y obtuve esto:

La palabra clave inicial es lo que se declara como la propiedad donde el valor inicial es la salida resultante, según lo define el navegador predeterminado.

Entonces, si el initial palabra clave se utiliza aquí:

.module {
  color: initial;
}

…entonces la initial el valor podría regresar como black, Si black es el valor predeterminado del navegador para la propiedad de ese elemento.

¿Cómo es diferente de inherit

Si estás pensando que esto se parece mucho a inherit, entonces tienes toda la razón. Suena muchísimo como eso.

Pero initial y inherit son distintos en el paso extra que inherit toma para verificar si hay otras propiedades que puede usar en la cascada antes de que se mueva al valor inicial.

H1 busca heredar un valor de color, que encuentra en el elemento del cuerpo.
Se le dice a H1 que use su valor inicial, por lo que salta el elemento del cuerpo y va a sus raíces.

Un ejemplo de la diferencia

Vea Pen CSS Initial vs. Inherit de Programar Plus(@css-tricks) en CodePen.

¿Mira eso? Las propiedades en el cuadro de la izquierda están configuradas para heredar los valores del .module class ya que es el elemento padre. Por otro lado, las propiedades en el cuadro de la derecha están configuradas para initial, que restablece las propiedades del elemento a los valores predeterminados del navegador.

Cuándo usar initial

me gusta pensar en initial como un restablecimiento completo. Es fácil que los estilos se compliquen a medida que crece el CSS, y usar initial es una forma de aclarar las cosas para que un elemento pueda volver a su estado natural. Si initial Si fuera Nintendo de la vieja escuela, lo usaría como el equivalente a sacar un cartucho de juego con errores de la consola y soplarlo (aunque hacerlo supuestamente no tuvo ningún efecto).

Pero eso no significa initial es una bala de plata para reinicios. Esto se debe a que los valores iniciales aún están sujetos a los valores predeterminados del navegador, que sabemos que pueden variar de un navegador a otro.

Oh, espera, ¿usas reinicios de CSS? En su lugar, puede esperar que se utilicen como valores iniciales.

En pocas palabras: yo usaría initial para borrar completamente cualquier estilo heredado de un elemento y usar inherit para asegurarse de que el elemento toma sus señales del padre más cercano.

Un caso de uso más práctico

He aquí un ejemplo de cómo initial se puede utilizar para crear líneas de colores alternos en las tablas.

Vea Pen CSS Initial por Programar Plus(@css-tricks) en CodePen.

Compatibilidad con navegador

MDN tiene un buen desglose del soporte actual para initial. Tenga en cuenta la evidente falta de soporte de IE.

Cromo Safari Firefox Ópera ES DECIR Androide iOS
19 15 No

Terminando

Me he estado devanando los sesos buscando algunos casos de uso interesantes para initial. Si bien veo una gran utilidad potencial en poder usar estilos predeterminados en un elemento, simplemente no los he encontrado en una aplicación práctica, aunque eso podría decir mucho más sobre mí que el valor de la propiedad en sí.

Donde esto será realmente útil es cuando all gana más apoyo como propiedad. Eso haría declarar all: initial una herramienta realmente poderosa para crear reinicios en cualquier elemento.

Por favor, comparta cualquier situación en la que initial era algo que tenías que usar en un proyecto. Puntos de bonificación si lo has usado para alguna hazaña complicada.

(Visited 3 times, 1 visits today)