Что такое пользовательские свойства CSS?
Вкратце, пользовательские свойства CSS – это свойства, которые были созданы разработчиком. Браузер ничего о них не знает, пока разработчик их не определит.
Объявление любого пользовательского свойства начинается с двух тире, после которых необходимо добавить имя свойства. После чего вы добавляете цвет и устанавливаете значение свойства.
Например, я создал – свойство melnik909BrandColor, со значением purple для элемента button:
button {
--melnik909BrandColor: purple;
}
Функция var
Первой особенностью пользовательских свойств CSS, является функция var. С помощью этой функции, я могу сказать браузеру, чтобы он взял значение пользовательского свойства и добавил его к любому свойству CSS.
Для этого я должен определить свойство CSS и добавить значение этого свойства, там же установить функцию var с пользовательским свойством в качестве аргумента.
К примеру, я добавил свойство —melnik909BrandColor для свойств границы и цвета.
button {
--melnik909BrandColor: purple;
color: var(--melnik909BrandColor);
border: 2px solid var(--melnik909BrandColor);
}
Пользовательские свойства можно изменять прямо в браузере
Опытный читатель, который знает такие инструменты, как Sass или LESS может сказать: «Стас, почему я должен изучать пользовательские свойства CSS? Я знаю переменные Sass и этого для меня достаточно».
Внимание! Переменные Sass и LESS помогают организовать CSS так, чтобы разработчикам было проще поддерживать код. Например, я создал переменную $melnik909BrandColor в которой сохранил цвет:
$melnik909BrandColor: purple;
button {
color: $melnik909BrandColor;
border: 2px solid $melnik909BrandColor;
}
После компиляции я увижу следующий код в браузере:
button {
color: purple;
border: 2px solid purple;
}
На этом примере видно, что переменные Sass и LESS не находятся в браузере.
Вторая особенность пользовательский свойств CSS заключается в том, что они находятся в браузере. Таким образом, я могу поменять значения прямо там. Например, я могу поменять значение свойства —melnik909BrandColor для состояния выделения элемента button:
button {
--melnik909BrandColor: purple;
color: var(--melnik909BrandColor);
border: 2px solid var(--melnik909BrandColor);
}
button:hover {
--melnik909BrandColor: #27ae60;
}
Можно использовать пользовательские свойства CSS и медиа запросы вместе
Третья особенность пользовательских свойств CSS — их значения могут быть изменены с помощью медиа запросов. Например, я определяю свойство melnik909BrandColor, чтобы изменить цвет текста элемента body на разных устройствах.
body {
color: var(--melnik909BrandColor);
}
@media (max-width: 768px) {
body {
--melnik909BrandColor: purple;
}
}
@media (min-width: 769px) {
body {
--melnik909BrandColor: tomato;
}
}
Функция calc и пользовательские свойства CSS
Бывают случаи, когда нам необходимо использовать функцию calc. К примеру, мне нравится использовать эту функцию, когда мне нужно посчитать количество элементов в строке:
.child {
width: calc(100% / 4);
}
.child {
width: calc(100% / 3);
}
Однако, этот код трудно использовать повторно, и тут пользовательские свойства CSS нам помогут. Мы можем создать переменную, которая будет считывать количество элементов. Например, я добавлю свойство –-itemsNumber в предыдущий пример:
.child {
width: calc(100% / var(--itemsNumber));
}
И определю значения в элемент parent:
.parent {
--itemsNumber: 5;
}
/* or */
.parent {
--itemsNumber: 7;
}
Настройка векторной графики
Существует 2 способа настройки векторной графики с помощью пользовательских свойств CSS.
В первом методе мы определяем атрибуты fill, stroke и stroke-width, и добавляем к ним пользовательские свойства CSS в качестве их значений.
Дальше мы можем добавить значения атрибутов, устанавливая значения пользовательских свойств:
<svg class="svg-with-attr" viewBox="0 0 55.867 55.867">
<path
stroke="var(--iconStroke)"
stroke-width="var(--iconStrokeWidth)"
fill="var(--iconFill)"
d="...">
</svg>
Теперь мы можем добавить значения атрибутов, путем установки значения пользовательских свойств:
.svg-with-attr {
--iconFill: #eeeeee;
--iconStroke: #000000;
--iconStrokeWidth: 1px;
}
Слева находится значок по умолчанию без стилей, а справа значок со стилями.
Во втором методе, мы определяем пользовательские свойства CSS для свойств stroke, stroke-width и fill, используя правила CSS.
body {
--iconFill: #ffcc00;
--iconStroke: #000000;
--iconStrokeWidth: 2px;
}
.svg-with-props {
stroke: var(--iconStroke);
stroke-width: var(--iconStrokeWidth);
fill: var(--iconFill);
}