Sí, el uso de clases es un buen enfoque, pero ahora es posible declarar variables en el CSS. Y las variables (especialmente las de color) son increíblemente útiles cuando declaras el mismo color (uno donde necesitas el valor hexadecimal, si usas un color integrado, realmente no importa tanto).
Y esto está usando CSS simple (y tbh, no tan elegante como usar SASS o menosCSS) pero funciona con propósitos de CSS simple. Primero, defina la variable real en el bloque :root
. Puedes definirlo en, por ejemplo, también un bloque p
(o cualquier otra cosa) pero solo estará disponible en ese bloque. Así que para asegurarse de que es accesible a nivel mundial, lo puso en el bloque de la raíz:
:root {
--custom-color: #f0f0f0;
}
Y el uso de la var
método (sin el método var no se resolverá como una referencia real) a continuación, puede hacer referencia a ella más tarde:
p{
color: var(--custom-color);
}
Desde el bloque :root
es (al igual que todas las demás declaraciones CSS) un bloque totalmente funcional que hace referencia a los elementos, no se puede declarar algo como:
:root{
color: #00ff00;
}
Eso haría referencia al atributo de color de cada elemento individual y lo configuraría (en este ejemplo) #00ff00
. Cada nombre de variable se declara tiene que empezar con --
, lo que significa que puede hacer:
:root{
--color: #00ff00;
}
Y de nuevo, si se puede, usar algo como SASS o lessCSS. La capacidad de declararlos escribiendo @color = #fff
* y haciendo referencia a @color
* es mucho más fácil que lidiar con CSS simple y tener que usar la palabra clave var
cada vez que quiera acceder a una propiedad personalizada.
Y se puede acceder CSS en línea con JS para obtener y/o alterar las propiedades:
//Inline CSS
element.style.getPropertyValue("--custom-color");
// get variable from wherever
getComputedStyle(element).getPropertyValue("--custom-color");
// set variable on inline style
element.style.setProperty("--custom-color", "#f0f0f0");
NOTA!
Esta es una función recientemente agregada, así que browser compatibility is important to check. Especialmente merece la pena prestar especial atención a Firefox, ya que tiene una brecha entre la introducción de las declaraciones de variables en sí y el método var()
.
* con lessCSS Es @color
, con SASS es $color
Si utiliza un marco como SASS, obtendrá esta característica junto con otras características brillantes. – Coderchu
Sí, ahora se llaman [Propiedades personalizadas CSS] (https://mobile.htmlgoodies.com/html5/css/a-guide-to-using-css-variables.html) – gbjbaanb