Ich arbeite an einer CSS-Datei, die ziemlich lang ist. Ich weiß, dass der Client Änderungen am Farbschema beantragen kann, und habe mich gefragt: Ist es möglich, Variablen Farben zuzuweisen, sodass ich einfach eine Variable ändern kann, damit die neue Farbe auf alle Elemente angewendet wird, die sie verwenden?
Bitte beachten Sie, dass ich PHP nicht verwenden kann, um die CSS-Datei dynamisch zu ändern.
css
variables
colors
css-variables
Patrick
quelle
quelle
Antworten:
CSS unterstützt dies nativ mit CSS-Variablen .
Beispiel CSS-Datei
Ein funktionierendes Beispiel finden Sie in dieser JSFiddle (das Beispiel zeigt, dass einer der CSS-Selektoren in der Geige die Farbe fest auf Blau codiert hat, der andere CSS-Selektor verwendet CSS-Variablen, sowohl die ursprüngliche als auch die aktuelle Syntax, um die Farbe auf Blau festzulegen). .
Bearbeiten einer CSS-Variablen in JavaScript / Client
Unterstützung wird in allen modernen Browsern angeboten
Firefox 31+ , Chrome 49+ , Safari 9.1+ , Microsoft Edge 15+ und Opera 36+ werden mit nativer Unterstützung für CSS-Variablen ausgeliefert.
quelle
Die Leute stimmen meiner Antwort immer wieder zu, aber es ist eine schreckliche Lösung im Vergleich zur Freude an Sass oder weniger , insbesondere angesichts der Anzahl der einfach zu bedienenden Guis für beide in diesen Tagen. Wenn Sie einen Sinn haben, ignorieren Sie alles, was ich unten vorschlage.
Sie können vor jeder Farbe einen Kommentar in das CSS einfügen, um als eine Art Variable zu dienen. Sie können den Wert der Verwendung von Suchen / Ersetzen ändern, also ...
Oben in der CSS-Datei
Später in der CSS-Datei
Ändern Sie dann beispielsweise das Farbschema für den Feldtext, für den Sie suchen / ersetzen
quelle
CSS selbst verwendet keine Variablen. Sie können jedoch eine andere Sprache wie SASS verwenden , um Ihr Styling mithilfe von Variablen zu definieren und automatisch CSS-Dateien zu erstellen, die Sie dann im Web bereitstellen können. Beachten Sie, dass Sie den Generator jedes Mal neu ausführen müssen, wenn Sie Änderungen an Ihrem CSS vornehmen, aber das ist nicht so schwierig.
quelle
Sie können CSS3-Variablen ausprobieren :
quelle
Es gibt keine einfache CSS-Lösung. Sie könnten dies tun:
Suchen Sie alle Instanzen von
background-color
undcolor
in Ihrer CSS-Datei und erstellen Sie einen Klassennamen für jede eindeutige Farbe.Gehen Sie als Nächstes jede einzelne Seite Ihrer Site durch, an der Farbe beteiligt war, und fügen Sie die entsprechenden Klassen für Farbe und Hintergrundfarbe hinzu.
Entfernen Sie zuletzt alle Farbreferenzen in Ihrem CSS außer Ihren neu erstellten Farbklassen.
quelle
Yeeeaaahhh .... Sie können jetzt die var ( ) -Funktion in CSS verwenden .. ...
Die gute Nachricht ist, dass Sie es mithilfe des JavaScript- Zugriffs ändern können , der sich auch global ändern wird ...
Aber wie man sie deklariert ...
Es ist ganz einfach:
Zum Beispiel möchten Sie a
#ff0000
einemvar()
zuweisen, es einfach zuweisen:root
und auch Folgendes beachten--
:Das Gute ist, dass die Browserunterstützung nicht schlecht ist, auch nicht kompiliert werden muss, um im Browser wie
LESS
oderSASS
...Hier ist auch ein einfaches JavaScript-Skript, das den Rotwert in Blau ändert:
quelle
Das "weniger" Ruby Gem für CSS sieht fantastisch aus.
http://lesscss.org/
quelle
Ja, in naher Zukunft (ich schreibe dies im Juni 2012) können Sie native CSS-Variablen definieren, ohne weniger / sass usw. zu verwenden! Die Webkit-Engine hat gerade die ersten CSS-Variablenregeln implementiert, sodass die neuesten Versionen von Chrome und Safari bereits mit ihnen funktionieren sollen. Weitere Informationen finden Sie im offiziellen Webkit-Entwicklungsprotokoll (Chrome / Safari) mit einer CSS-Browser-Demo vor Ort.
Hoffentlich können wir in den nächsten Monaten eine umfassende Browserunterstützung für native CSS-Variablen erwarten.
quelle
Verwenden Sie aus Gründen der Unterstützung keine CSS3-Variablen.
Ich würde Folgendes tun, wenn Sie eine reine CSS-Lösung wünschen.
Verwenden Sie Farbklassen mit Samennamen .
Trennen Sie die Struktur von der Haut (OOCSS)
Legen Sie diese in eine separate CSS-Datei, um sie nach Bedarf zu ändern.
quelle
Sie können das CSS über Javascript übergeben und alle Instanzen von COLOUR1 durch eine bestimmte Farbe ersetzen (im Grunde genommen eine Regex-Version) und ein Backup-Stylesheet bereitstellen, falls der Endbenutzer JS deaktiviert hat
quelle
Mir ist nicht klar, warum Sie PHP nicht verwenden können. Sie können dann einfach Variablen hinzufügen und verwenden, die Datei als PHP-Datei speichern und anstelle der CSS-Datei als Stylesheet mit dieser PHP-Datei verknüpfen.
Es muss nicht PHP sein, aber Sie verstehen, was ich meine.
Wenn wir Programmiermaterial wollen, warum nicht eine Programmiersprache verwenden, bis CSS (vielleicht) Dinge wie Variablen unterstützt?
Schauen Sie sich auch Nicole Sullivans objektorientiertes CSS an .
quelle
dicejs.com (formal cssobjs) ist eine clientseitige Version von SASS. Sie können Variablen in Ihrem CSS festlegen (gespeichert in json-formatiertem CSS) und Ihre Farbvariablen wiederverwenden.
Und hier ist ein Link zu einer vollständigen herunterladbaren Demo, die etwas hilfreicher ist als ihre Dokumentation: dicejs Demo
quelle
Erwägen Sie die Verwendung von SCSS. Es ist voll kompatibel mit der CSS-Syntax, daher ist eine gültige CSS-Datei auch eine gültige SCSS-Datei. Dies erleichtert die Migration. Ändern Sie einfach das Suffix. Es verfügt über zahlreiche Verbesserungen, wobei Variablen und verschachtelte Selektoren am nützlichsten sind.
Sie müssen es über einen Vorprozessor ausführen, um es in CSS zu konvertieren, bevor Sie es an den Client senden.
Ich bin seit vielen Jahren ein Hardcore-CSS-Entwickler, aber da ich mich gezwungen habe, ein Projekt in SCSS durchzuführen, werde ich jetzt nichts anderes mehr verwenden.
quelle
Wenn Sie Ruby auf Ihrem System haben, können Sie dies tun:
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
Dies wurde für Rails erstellt. Im Folgenden erfahren Sie jedoch, wie Sie es so ändern können, dass es eigenständig ausgeführt wird.
Sie können diese Methode unabhängig von Rails verwenden, indem Sie ein kleines Ruby-Wrapper-Skript schreiben, das in Verbindung mit site_settings.rb funktioniert und Ihre CSS-Pfade berücksichtigt und das Sie jedes Mal aufrufen können, wenn Sie Ihr CSS neu generieren möchten (z während des Site-Starts)
Sie können Ruby auf so ziemlich jedem Betriebssystem ausführen, daher sollte dies ziemlich plattformunabhängig sein.
Beispiel: wrapper: generate_CSS.rb (Führen Sie dieses Skript aus, wenn Sie Ihr CSS generieren müssen.)
Die Methode generate_CSS_files in site_settings.rb muss dann wie folgt geändert werden:
quelle
Sie können Selektoren gruppieren:
quelle
Sicher kann man dank der wundervollen Welt mehrerer Klassen dies irgendwie tun:
aber am Ende kombiniere ich sie trotzdem oft so:
Ich weiß, dass die semantische Polizei überall auf Ihnen sein wird, aber es funktioniert.
quelle
Ich fürchte, nicht PHP, aber Zope und Plone verwenden etwas Ähnliches wie SASS namens DTML , um dies zu erreichen. Es ist unglaublich nützlich in CMS.
Upfront Systems hat ein gutes Beispiel für die Verwendung in Plone.
quelle
Wenn Sie die CSS-Datei als XML-Vorlage schreiben, können Sie Farbwerte aus einer einfachen XML-Datei lesen. Erstellen Sie dann das CSS mit einem xslt-Prozessor.
Farben.xml:
styles.xsl:
Befehl zum Rendern von CSS:
xsltproc -o styles.css styles.xsl colors.xml
styles.css:
quelle
Mit CSS allein ist das nicht möglich.
Sie können dies mit JavaScript und WENIGER mit less.js tun , wodurch WENIGER Variablen live in CSS gerendert werden. Dies ist jedoch nur für die Entwicklung vorgesehen und erhöht den Overhead für den realen Gebrauch.
Mit CSS können Sie am ehesten einen Attribut-Teilzeichenfolgen-Selektor wie den folgenden verwenden:
und setzen Sie die
id
s aller Ihrer Elemente, die Sie anpassen möchten, auf Namen, die mit beginnencolvar-
, wie zcolvar-header
. Wenn Sie dann die Farbe ändern, werden alle ID-Stile aktualisiert. Das ist so nah wie möglich mit CSS allein.quelle