Estoy trabajando en un archivo CSS que es bastante largo. Sé que el cliente podría solicitar cambios en el esquema de color y me preguntaba: ¿es posible asignar colores a las variables, de modo que pueda cambiar una variable para que se aplique el nuevo color a todos los elementos que lo usan?
Tenga en cuenta que no puedo usar PHP para cambiar dinámicamente el archivo CSS.
css
variables
colors
css-variables
Patricio
fuente
fuente
Respuestas:
CSS admite esto de forma nativa con las variables CSS .
Ejemplo de archivo CSS
Para un ejemplo de trabajo, vea este JSFiddle (el ejemplo muestra que uno de los selectores CSS en el violín tiene el color codificado en azul, el otro selector CSS utiliza variables CSS, tanto la sintaxis original como la actual, para establecer el color en azul) .
Manipular una variable CSS en JavaScript / lado del cliente
El soporte está en todos los navegadores modernos
Firefox 31+ , Chrome 49+ , Safari 9.1+ , Microsoft Edge 15+ y Opera 36+ se envían con soporte nativo para variables CSS.
fuente
La gente sigue votando mi respuesta, pero es una solución terrible en comparación con la alegría de sass o menos , particularmente dada la cantidad de gui fáciles de usar para ambos en estos días. Si tiene algún sentido, ignore todo lo que sugiero a continuación.
Puede poner un comentario en el CSS antes de cada color para que sirva como una especie de variable, que puede cambiar el valor de usar buscar / reemplazar, así que ...
En la parte superior del archivo CSS
Más adelante en el archivo CSS
Luego, por ejemplo, para cambiar el esquema de color para el texto del cuadro en el que realiza una búsqueda / reemplazo
fuente
CSS en sí mismo no usa variables. Sin embargo, puede usar otro idioma como SASS para definir su estilo usando variables y producir automáticamente archivos CSS, que luego puede poner en la web. Tenga en cuenta que tendría que volver a ejecutar el generador cada vez que realizara un cambio en su CSS, pero eso no es tan difícil.
fuente
Puedes probar las variables CSS3 :
fuente
No hay una solución fácil de CSS solamente. Podrías hacer esto:
Encuentre todas las instancias de
background-color
ycolor
en su archivo CSS y cree un nombre de clase para cada color único.Luego, revise todas las páginas de su sitio donde haya color involucrado y agregue las clases apropiadas para el color y el color de fondo.
Por último, elimine cualquier referencia de colores en su CSS que no sean sus clases de color recién creadas.
fuente
Yeeeaaahhh .... ahora puedes usar la función var ( ) en CSS ... ...
La buena noticia es que puede cambiarlo mediante el acceso a JavaScript , que también cambiará a nivel mundial ...
Pero cómo declararlos ...
Es bastante simple:
Por ejemplo, desea asignar un
#ff0000
a avar()
, simplemente asignarlo:root
, también prestar atención a--
:Lo bueno es que el soporte del navegador no es malo, tampoco es necesario compilarlo para usarlo en el navegador como
LESS
oSASS
...Además, aquí hay un script JavaScript simple, que cambia el valor rojo a azul:
fuente
La Ruby Gem 'Less' para CSS se ve increíble.
http://lesscss.org/
fuente
Sí, en un futuro próximo (escribo esto en junio de 2012) puede definir variables css nativas, ¡sin usar less / sass, etc.! El motor de Webkit acaba de implementar las primeras reglas variables de CSS, por lo que las versiones más avanzadas de Chrome y Safari ya deben funcionar con ellas. Consulte el registro de desarrollo del Webkit oficial (Chrome / Safari) con una demostración del navegador CSS en el sitio.
Con suerte, podemos esperar un amplio soporte del navegador de variables css nativas en los próximos meses.
fuente
No use variables css3 debido a la compatibilidad.
Haría lo siguiente si desea una solución CSS pura.
Use clases de colores con nombres semenáticos .
Separar la estructura de la piel (OOCSS)
Ponga esto dentro de un archivo css separado para cambiarlo según sea necesario.
fuente
Puede pasar el CSS a través de javascript y reemplazar todas las instancias de COLOUR1 con un determinado color (básicamente regex) y proporcionar una hoja de estilo de respaldo en caso de que el usuario final haya desactivado JS
fuente
No tengo claro por qué no puedes usar PHP. Luego, puede simplemente agregar y usar variables como desee, guardar el archivo como un archivo PHP y vincularlo a ese archivo .php como la hoja de estilo en lugar del archivo .css.
No tiene que ser PHP, pero entiendes lo que quiero decir.
Cuando queremos cosas de programación, ¿por qué no usar un lenguaje de programación hasta que CSS (tal vez) admita cosas como variables?
Además, echa un vistazo a CSS orientado a objetos de Nicole Sullivan .
fuente
dicejs.com (formalmente cssobjs) es una versión del lado del cliente de SASS. Puede establecer variables en su CSS (almacenado en CSS formateado json) y reutilizar sus variables de color.
Y aquí hay un enlace a una demostración completa descargable que es un poco más útil que su documentación: dicejs demo
fuente
Considere usar SCSS. Es totalmente compatible con la sintaxis CSS, por lo que un archivo CSS válido también es un archivo SCSS válido. Esto facilita la migración, solo cambie el sufijo. Tiene numerosas mejoras, siendo las más útiles las variables y los selectores anidados.
Debe ejecutarlo a través de un preprocesador para convertirlo a CSS antes de enviarlo al cliente.
He sido un desarrollador de CSS incondicional durante muchos años, pero desde que me obligué a hacer un proyecto en SCSS, ahora no usaré nada más.
fuente
Si tiene Ruby en su sistema, puede hacer esto:
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
Esto se hizo para Rails, pero vea a continuación cómo modificarlo para ejecutarlo de forma independiente.
Puede usar este método independientemente de Rails, escribiendo un pequeño script de contenedor Ruby que funcione junto con site_settings.rb y tenga en cuenta sus rutas CSS, y que puede llamar cada vez que desee volver a generar su CSS (por ejemplo, durante el inicio del sitio)
Puede ejecutar Ruby en casi cualquier sistema operativo, por lo que debería ser bastante independiente de la plataforma.
por ejemplo, wrapper: generate_CSS.rb (ejecuta este script siempre que necesites generar tu CSS)
el método generate_CSS_files en site_settings.rb debe modificarse así:
fuente
Puede agrupar selectores:
fuente
Claro que, de alguna manera, gracias al maravilloso mundo de múltiples clases, puede hacer esto:
pero a menudo termino combinándolos de esta manera:
Sé que la policía semántica estará sobre ti, pero funciona.
fuente
Me temo que no PHP, pero Zope y Plone usan algo similar a SASS llamado DTML para lograr esto. Es increíblemente útil en los CMS.
Upfront Systems tiene un buen ejemplo de su uso en Plone.
fuente
Si escribe el archivo css como una plantilla xsl, puede leer los valores de color de un simple archivo xml. Luego cree el CSS con un procesador xslt.
colors.xml:
styles.xsl:
Comando para renderizar css:
xsltproc -o styles.css styles.xsl colors.xml
styles.css:
fuente
No es posible solo con CSS.
Puede hacerlo con JavaScript y MENOS usando less.js , que representará MENOS variables en CSS en vivo, pero es solo para desarrollo y agrega demasiada sobrecarga para el uso en la vida real.
Lo más cercano que puede venir con CSS es usar un selector de subcadena de atributos como este:
y establezca los
id
s de todos los elementos que desea que se ajusten a los nombres que comienzancolvar-
, comocolvar-header
. Luego, cuando cambia el color, se actualizan todos los estilos de ID. Eso es lo más cercano que puedes obtener con CSS solo.fuente