CSS
Właściwości niestandardowe (zmienne)
Szukaj…
Wprowadzenie
Zmienne CSS pozwalają autorom tworzyć wartości wielokrotnego użytku, które mogą być używane w całym dokumencie CSS.
Na przykład w CSS często stosuje się jeden kolor w całym dokumencie. Przed zmiennymi CSS oznaczałoby to wielokrotne użycie tej samej wartości koloru w dokumencie. Za pomocą Zmiennych CSS wartość koloru można przypisać do zmiennej i odwoływać się do niej w wielu miejscach. Ułatwia to zmienianie wartości i jest bardziej semantyczne niż stosowanie tradycyjnych wartości CSS.
Składnia
- : root {} / * pseudoklasa, która pozwala na bardziej globalną definicję zmiennych * /
- --variable-name: wartość ; / * zdefiniuj zmienną * /
- var (- nazwa zmiennej, wartość domyślna ) / * użyj zdefiniowanej zmiennej z rezerwową wartością domyślną * /
Uwagi
Zmienne CSS są obecnie uważane za technologię eksperymentalną.
WSPARCIE PRZEGLĄDARKI / KOMPATYBILNOŚĆ
Firefox: wersja 31 + (domyślnie włączona)
Chrome: wersja 49 + (domyślnie włączona) .
„Tę funkcję można włączyć do testowania w wersji 48 Chrome, włączając experimental Web Platform
funkcję experimental Web Platform
. Wpisz chrome://flags/
na pasku adresu Chrome, aby uzyskać dostęp do tego ustawienia.”
IE: nieobsługiwany.
Edge: Under Development
Safari: wersja 9.1+
Zmienny kolor
:root {
--red: #b00;
--blue: #4679bd;
--grey: #ddd;
}
.Bx1 {
color: var(--red);
background: var(--grey);
border: 1px solid var(--red);
}
Zmienne wymiary
:root {
--W200: 200px;
--W10: 10px;
}
.Bx2 {
width: var(--W200);
height: var(--W200);
margin: var(--W10);
}
Zmienna kaskada
Zmienne CSS kaskadowo działają podobnie jak inne właściwości i można je bezpiecznie przekształcić.
Możesz zdefiniować zmienne wiele razy i tylko definicja o najwyższej specyficzności będzie zastosowana do wybranego elementu.
Zakładając ten HTML:
<a class="button">Button Green</a>
<a class="button button_red">Button Red</a>
<a class="button">Button Hovered On</a>
Możemy napisać ten CSS:
.button {
--color: green;
padding: .5rem;
border: 1px solid var(--color);
color: var(--color);
}
.button:hover {
--color: blue;
}
.button_red {
--color: red;
}
I uzyskaj ten wynik:
Prawidłowe / nieprawidłowe
Nazywanie Nazwy zmiennych CSS zawierają tylko litery i myślniki, podobnie jak inne właściwości CSS (np .: wysokość linii, -moz-box-zmiana rozmiaru), ale powinny zaczynać się od podwójnych myślników (-)
//These are Invalids variable names
--123color: blue;
--#color: red;
--bg_color: yellow
--$width: 100px;
//Valid variable names
--color: red;
--bg-color: yellow
--width: 100px;
W zmiennych CSS rozróżniana jest wielkość liter.
/* The variable names below are all different variables */
--pcolor: ;
--Pcolor: ;
--pColor: ;
Pusta przestrzeń Vs
/* Invalid */
--color:;
/* Valid */
--color: ; /* space is assigned */
Konkatenacje
/* Invalid - CSS doesn't support concatenation*/
.logo{
--logo-url: 'logo';
background: url('assets/img/' var(--logo-url) '.png');
}
/* Invalid - CSS bug */
.logo{
--logo-url: 'assets/img/logo.png';
background: url(var(--logo-url));
}
/* Valid */
.logo{
--logo-url: url('assets/img/logo.png');
background: var(--logo-url);
}
Ostrożnie podczas korzystania z jednostek
/* Invalid */
--width: 10;
width: var(--width)px;
/* Valid */
--width: 10px;
width: var(--width);
/* Valid */
--width: 10;
width: calc(1px * var(--width)); /* multiply by 1 unit to convert */
width: calc(1em * var(--width));
Z zapytaniami o media
Możesz ponownie ustawić zmienne w zapytaniach o media i sprawić, by te nowe wartości były kaskadowane wszędzie tam, gdzie są używane, co jest niemożliwe w przypadku zmiennych przedprocesowych.
Tutaj zapytanie o media zmienia zmienne użyte do utworzenia bardzo prostej siatki:
HTML
<div></div>
<div></div>
<div></div>
<div></div>
CSS
:root{
--width: 25%;
--content: 'This is desktop';
}
@media only screen and (max-width: 767px){
:root{
--width:50%;
--content: 'This is mobile';
}
}
@media only screen and (max-width: 480px){
:root{
--width:100%;
}
}
div{
width: calc(var(--width) - 20px);
height: 100px;
}
div:before{
content: var(--content);
}
/* Other Styles */
body {
padding: 10px;
}
div{
display: flex;
align-items: center;
justify-content: center;
font-weight:bold;
float:left;
margin: 10px;
border: 4px solid black;
background: red;
}
Możesz spróbować zmienić rozmiar okna w tej wersji demonstracyjnej CodePen
Oto animowany zrzut ekranu zmiany rozmiaru w akcji: