Je travaille sur un fichier CSS qui est assez long. Je sais que le client pourrait demander des modifications au jeu de couleurs et je me demandais: est-il possible d'attribuer des couleurs à des variables, de sorte que je puisse simplement changer une variable pour que la nouvelle couleur soit appliquée à tous les éléments qui l'utilisent?
Veuillez noter que je ne peux pas utiliser PHP pour modifier dynamiquement le fichier CSS.
css
variables
colors
css-variables
patrick
la source
la source
Réponses:
CSS prend en charge cela nativement avec les variables CSS .
Exemple de fichier CSS
Pour un exemple de travail, veuillez consulter ce JSFiddle (l'exemple montre que l'un des sélecteurs CSS du violon a la couleur codée en bleu, l'autre sélecteur CSS utilise des variables CSS, à la fois la syntaxe originale et actuelle, pour définir la couleur sur bleu) .
Manipulation d'une variable CSS en JavaScript / côté client
Le support est dans tous les navigateurs modernes
Firefox 31+ , Chrome 49+ , Safari 9.1+ , Microsoft Edge 15+ et Opera 36+ sont livrés avec une prise en charge native des variables CSS.
la source
Les gens continuent de voter pour ma réponse, mais c'est une solution terrible par rapport à la joie de sass ou moins , en particulier compte tenu du nombre de gui faciles à utiliser pour ces deux jours. Si vous avez un sens, ignorez tout ce que je suggère ci-dessous.
Vous pouvez mettre un commentaire dans le CSS avant chaque couleur afin de servir de sorte de variable, dont vous pouvez changer la valeur en utilisant find / replace, alors ...
En haut du fichier css
Plus loin dans le fichier CSS
Ensuite, pour, par exemple, changer le jeu de couleurs pour le texte de la boîte sur lequel vous effectuez une recherche / remplacement
la source
CSS lui-même n'utilise pas de variables. Cependant, vous pouvez utiliser un autre langage comme SASS pour définir votre style à l'aide de variables et produire automatiquement des fichiers CSS que vous pouvez ensuite mettre en ligne. Notez que vous devrez réexécuter le générateur chaque fois que vous apportez une modification à votre CSS, mais ce n'est pas si difficile.
la source
Vous pouvez essayer des variables CSS3 :
la source
Il n'y a pas de solution CSS simple. Vous pouvez faire ceci:
Recherchez toutes les instances de
background-color
etcolor
dans votre fichier CSS et créez un nom de classe pour chaque couleur unique.Ensuite, parcourez chaque page de votre site où la couleur était impliquée et ajoutez les classes appropriées pour la couleur et la couleur d'arrière-plan.
Enfin, supprimez toutes les références de couleurs dans votre CSS autres que vos classes de couleurs nouvellement créées.
la source
Yeeeaaahhh .... vous pouvez maintenant utiliser la fonction var ( ) en CSS .. ...
La bonne nouvelle est que vous pouvez le changer en utilisant un accès JavaScript , qui changera également au niveau mondial ...
Mais comment les déclarer ...
C'est assez simple:
Par exemple, vous voulez attribuer un
#ff0000
à unvar()
, affectez-le simplement à:root
, faites également attention à--
:Les bonnes choses sont que le support du navigateur n'est pas mauvais, n'a pas besoin d'être compilé pour être utilisé dans le navigateur comme
LESS
ouSASS
...En outre, voici un simple script JavaScript, qui change la valeur rouge en bleu:
la source
Le «moins» Ruby Gem pour CSS est génial.
http://lesscss.org/
la source
Oui, dans un futur proche (j'écris ceci en juin 2012), vous pouvez définir des variables CSS natives, sans utiliser moins / sass, etc.! Le moteur Webkit vient d'implémenter les premières règles de variable CSS, donc les versions de pointe de Chrome et Safari doivent déjà fonctionner avec elles. Voir le journal de développement officiel de Webkit (Chrome / Safari) avec une démo de navigateur css sur site.
J'espère que nous pourrons nous attendre à une prise en charge généralisée par le navigateur des variables CSS natives dans les prochains mois.
la source
N'utilisez pas de variables css3 en raison de la prise en charge.
Je ferais ce qui suit si vous voulez une solution CSS pure.
Utilisez des classes de couleurs avec des noms séméniques .
Séparer la structure de la peau (OOCSS)
Mettez-les dans un fichier css séparé pour les modifier au besoin.
la source
Vous pouvez passer le CSS via javascript et remplacer toutes les instances de COLOUR1 par une certaine couleur (essentiellement regex) et fournir une feuille de style de sauvegarde au cas où l'utilisateur final aurait désactivé JS
la source
Je ne comprends pas pourquoi vous ne pouvez pas utiliser PHP. Vous pouvez ensuite simplement ajouter et utiliser des variables comme vous le souhaitez, enregistrer le fichier en tant que fichier PHP et lier à ce fichier .php en tant que feuille de style au lieu du fichier .css.
Il n'est pas nécessaire que ce soit PHP, mais vous comprenez ce que je veux dire.
Lorsque nous voulons des choses de programmation, pourquoi ne pas utiliser un langage de programmation jusqu'à ce que CSS (peut-être) prenne en charge des choses comme les variables?
Consultez également le CSS orienté objet de Nicole Sullivan .
la source
dicejs.com (officiellement cssobjs) est une version côté client de SASS. Vous pouvez définir des variables dans votre CSS (stockées dans du CSS au format json) et réutiliser vos variables de couleur.
Et voici un lien vers une démo téléchargeable complète qui est un peu plus utile que leur documentation: démo dicejs
la source
Pensez à utiliser SCSS. Il est entièrement compatible avec la syntaxe CSS, donc un fichier CSS valide est également un fichier SCSS valide. Cela facilite la migration, changez simplement le suffixe. Il présente de nombreuses améliorations, les plus utiles étant les variables et les sélecteurs imbriqués.
Vous devez l'exécuter via un pré-processeur pour le convertir en CSS avant de l'envoyer au client.
Je suis un développeur CSS hardcore depuis de nombreuses années maintenant, mais depuis que je me suis forcé à faire un projet dans SCSS, je n'utiliserai plus rien d'autre.
la source
Si vous avez Ruby sur votre système, vous pouvez le faire:
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
Ceci a été fait pour Rails, mais voir ci-dessous pour savoir comment le modifier pour l'exécuter de manière autonome.
Vous pouvez utiliser cette méthode indépendamment de Rails, en écrivant un petit script wrapper Ruby qui fonctionne en conjonction avec site_settings.rb et prend en compte vos chemins CSS, et que vous pouvez appeler chaque fois que vous souhaitez régénérer votre CSS (par exemple lors du démarrage du site)
Vous pouvez exécuter Ruby sur à peu près n'importe quel système d'exploitation, donc cela devrait être assez indépendant de la plate-forme.
par exemple wrapper: generate_CSS.rb (exécutez ce script chaque fois que vous devez générer votre CSS)
la méthode generate_CSS_files dans site_settings.rb doit ensuite être modifiée comme ceci:
la source
Vous pouvez regrouper les sélecteurs:
la source
Bien sûr, en quelque sorte, grâce au monde merveilleux de plusieurs classes, vous pouvez le faire:
mais je finis souvent par les combiner comme ça:
Je sais que la police sémantique sera partout sur toi, mais ça marche.
la source
Pas PHP, je le crains, mais Zope et Plone utilisent quelque chose de similaire à SASS appelé DTML pour y parvenir. C'est incroyablement utile dans les CMS.
Upfront Systems a un bon exemple de son utilisation dans Plone.
la source
Si vous écrivez le fichier css en tant que modèle xsl, vous pouvez lire les valeurs de couleur à partir d'un simple fichier xml. Créez ensuite le css avec un processeur xslt.
colours.xml:
styles.xsl:
Commande pour rendre css:
xsltproc -o styles.css styles.xsl colors.xml
styles.css:
la source
Ce n'est pas possible avec CSS seul.
Vous pouvez le faire avec JavaScript et LESS en utilisant less.js , qui rendra les variables LESS en CSS en direct, mais c'est uniquement pour le développement et ajoute trop de surcharge pour une utilisation réelle.
Le plus proche que vous pouvez faire avec CSS est d'utiliser un sélecteur de sous-chaîne d'attribut comme celui-ci:
et définissez les
id
s de tous vos éléments que vous souhaitez ajuster en commençant par des nomscolvar-
, tels quecolvar-header
. Ensuite, lorsque vous modifiez la couleur, tous les styles d'ID sont mis à jour. C'est aussi proche que possible avec CSS seul.la source