Pracuję nad plikiem CSS, który jest dość długi. Wiem, że klient mógł poprosić o zmiany w schemacie kolorów i zastanawiałem się: czy można przypisać kolory do zmiennych, abym mógł po prostu zmienić zmienną i zastosować nowy kolor do wszystkich elementów, które z niej korzystają?
Pamiętaj, że nie mogę używać PHP do dynamicznej zmiany pliku CSS.
css
variables
colors
css-variables
Patrick
źródło
źródło
Odpowiedzi:
CSS obsługuje to natywnie za pomocą Zmiennych CSS .
Przykładowy plik CSS
Dla działającego przykładu zobacz ten JSFiddle (przykład pokazuje, że jeden z selektorów CSS w skrzypcach ma kolor zakodowany na niebiesko, drugi selektor CSS używa zmiennych CSS, zarówno oryginalnej, jak i bieżącej składni, aby ustawić kolor na niebieski) .
Manipulowanie zmienną CSS po stronie JavaScript / klienta
Wsparcie jest we wszystkich nowoczesnych przeglądarkach
Firefox 31+ , Chrome 49+ , Safari 9.1+ , Microsoft Edge 15+ i Opera 36+ są dostarczane z natywną obsługą zmiennych CSS.
źródło
Ludzie wciąż oceniają moją odpowiedź, ale jest to okropne rozwiązanie w porównaniu do radości z sassa lub mniejszej , szczególnie biorąc pod uwagę liczbę łatwych w użyciu gui w obu tych dniach. Jeśli masz jakiś sens, zignoruj wszystko, co sugeruję poniżej.
Możesz umieścić komentarz w css przed każdym kolorem, aby służyć jako rodzaj zmiennej, którą możesz zmienić wartość za pomocą funkcji znajdź / zamień, więc ...
Na górze pliku css
Później w pliku CSS
Następnie, na przykład, zmień schemat kolorów dla tekstu pola, w którym znajdujesz / zamieniasz
źródło
Sam CSS nie używa zmiennych. Możesz jednak użyć innego języka, takiego jak SASS, aby zdefiniować styl za pomocą zmiennych i automatycznie utworzyć pliki CSS, które możesz następnie umieścić w Internecie. Pamiętaj, że będziesz musiał ponownie uruchomić generator za każdym razem, gdy wprowadzasz zmiany w CSS, ale to nie jest takie trudne.
źródło
Możesz wypróbować zmienne CSS3 :
źródło
Nie ma łatwego rozwiązania opartego wyłącznie na CSS. Możesz to zrobić:
Znajdź wszystkie instancje
background-color
orazcolor
w pliku CSS i stworzyć nazwę klasy dla każdego unikalnego koloru.Następnie przejrzyj każdą stronę witryny, w której był zaangażowany kolor, i dodaj odpowiednie klasy dla koloru i tła.
Na koniec usuń odniesienia do kolorów w swoim CSS inne niż nowo utworzone klasy kolorów.
źródło
Yeeeaaahhh .... możesz teraz używać funkcji var ( ) w CSS .. ...
Dobrą wiadomością jest to, że możesz to zmienić za pomocą dostępu JavaScript , który również zmieni się globalnie ...
Ale jak je zadeklarować ...
To dość proste:
Na przykład, chcesz przypisać a
#ff0000
dovar()
, wystarczy po prostu przypisać:root
, a także zwrócić uwagę na--
:Do dobrych rzeczy są takie wsparcie przeglądarka nie jest złe, też nie muszą być kompilowane do użytku w przeglądarce jak
LESS
iSASS
...Oto prosty skrypt JavaScript, który zmienia czerwoną wartość na niebieską:
źródło
Rubinowy klejnot „Mniej” dla CSS wygląda niesamowicie.
http://lesscss.org/
źródło
Tak, w najbliższej przyszłości (piszę to w czerwcu 2012 roku) możesz zdefiniować natywne zmienne css, bez użycia less / sass itp! Silnik Webkit właśnie zaimplementował pierwsze zmienne reguły css, więc najnowocześniejsze wersje Chrome i Safari już z nimi współpracują. Zobacz dziennik rozwoju Official Webkit (Chrome / Safari) z demonstracyjną przeglądarką css w witrynie.
Mamy nadzieję, że w najbliższych miesiącach możemy spodziewać się szerokiej obsługi natywnych zmiennych css w przeglądarce.
źródło
Nie używaj zmiennych css3 ze względu na obsługę.
Zrobiłbym następujące, jeśli chcesz czystego rozwiązania css.
Używaj klas kolorów z nazwami semenatycznymi .
Oddziel strukturę od skóry (OOCSS)
Umieść je w osobnym pliku css, aby zmienić w razie potrzeby.
źródło
Możesz przekazać CSS przez javascript i zastąpić wszystkie wystąpienia COLOUR1 określonym kolorem (w zasadzie regexować go) i dostarczyć arkusz stylów tworzenia kopii zapasowych, w przypadku gdy użytkownik końcowy wyłączył JS
źródło
Nie jestem pewien, dlaczego nie możesz używać PHP. Następnie możesz po prostu dodawać i używać zmiennych, jak chcesz, zapisać plik jako plik PHP i połączyć z tym plikiem .php jako arkusz stylów zamiast pliku .css.
To nie musi być PHP, ale rozumiesz.
Kiedy chcemy programować, dlaczego nie użyć języka programowania, dopóki CSS (być może) nie obsługuje takich rzeczy jak zmienne?
Zobacz także obiektowy CSS Nicole Sullivan .
źródło
dicejs.com (formalnie cssobjs) to wersja SASS po stronie klienta. Możesz ustawić zmienne w swoim CSS (przechowywanym w formacie CSS w formacie json) i ponownie użyć zmiennych kolorów.
A tutaj jest link do pełnej wersji demo do pobrania, która jest nieco bardziej pomocna niż ich dokumentacja: demo dicejs
źródło
Rozważ użycie SCSS. Jest w pełni kompatybilny ze składnią CSS, więc prawidłowy plik CSS jest również prawidłowym plikiem SCSS. Ułatwia to migrację, wystarczy zmienić przyrostek. Ma wiele ulepszeń, z których najbardziej przydatne są zmienne i zagnieżdżone selektory.
Musisz uruchomić go przez procesor wstępny, aby przekonwertować go na CSS przed wysłaniem go do klienta.
Od wielu lat jestem zagorzałym programistą CSS, ale odkąd zmusiłem się do projektu w SCSS, nie będę używać niczego innego.
źródło
Jeśli masz Ruby w swoim systemie, możesz to zrobić:
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
Zostało to stworzone dla Railsów, ale zobacz poniżej, jak je zmodyfikować, aby działało samodzielnie.
Możesz użyć tej metody niezależnie od Railsów, pisząc mały skrypt opakowujący Ruby, który działa w połączeniu z site_settings.rb i bierze pod uwagę twoje ścieżki CSS i który możesz wywoływać za każdym razem, gdy chcesz ponownie wygenerować swój CSS (np. podczas uruchamiania witryny)
Możesz uruchomić Ruby na prawie każdym systemie operacyjnym, więc powinno to być dość niezależne od platformy.
np. wrapper: generate_CSS.rb (uruchom ten skrypt, ilekroć potrzebujesz wygenerować swój CSS)
Następnie należy zmodyfikować metodę generate_CSS_files w site_settings.rb w następujący sposób :
źródło
Możesz pogrupować selektory:
źródło
Pewnie, że może, dzięki cudownemu światowi wielu klas, może to zrobić:
ale często i tak je łączę:
Wiem, że semantyczna policja będzie wokół ciebie, ale działa.
źródło
Obawiam się, że nie PHP, ale Zope i Plone używają czegoś podobnego do SASS o nazwie DTML . Jest to niezwykle przydatne w CMS.
Upfront Systems ma dobry przykład zastosowania w Plone.
źródło
Jeśli napiszesz plik css jako szablon xsl, możesz odczytać wartości kolorów z prostego pliku xml. Następnie utwórz css za pomocą procesora xslt.
colors.xml:
styles.xsl:
Polecenie do renderowania css:
xsltproc -o styles.css styles.xsl colors.xml
styles.css:
źródło
Nie jest to możliwe tylko z CSS.
Możesz to zrobić za pomocą JavaScript i MNIEJ za pomocą less.js , co spowoduje, że zmienne LESS zostaną przetworzone w CSS na żywo, ale jest to tylko dla programistów i dodaje zbyt wiele narzutów do użycia w prawdziwym życiu.
Najbliższe CSS to użycie selektora podciągów atrybutów w następujący sposób:
i ustaw
id
s wszystkich elementów, które chcesz dopasować do nazw zaczynających się odcolvar-
, takich jakcolvar-header
. Następnie po zmianie koloru wszystkie style identyfikatora są aktualizowane. Jest to tak blisko, jak to tylko możliwe z samym CSS.źródło