Ответ 1
Последнее обновление: 26/05/2017
Появились переменные CSS (пользовательские свойства)!
Еще год еще один браузер. Edge теперь присоединился к Mozilla и Google, поддерживая эту замечательную функцию.
Требуется препроцессор "НЕ"!
В CSS много повторений. Один цвет может использоваться в нескольких местах.
Для некоторых объявлений CSS можно объявить это выше в каскаде и наследование CSS естественно решить эту проблему.
Для нетривиальных проектов это не всегда возможно. Объявив переменную в псевдоэлементе :root
, автор CSS может остановить некоторые экземпляры повторения, используя переменную.
Как это работает
Задайте свою переменную в верхней части таблицы стилей:
CSS
Создайте класс root:
:root {
}
Создайте переменную:
:root {
--bgd: #333;
}
Добавьте имена для своей переменной, а затем значение:
(имена могут быть любой выбранной вами строкой.)
:root {
--red: #b00;
--blue: #00b;
--fullwidth: 100%;
}
Задайте переменные в любом месте документа CSS:
h1 {
color: var(--red);
}
#MyText {
color: var(--blue);
width: var(--fullwidth);
}
ПОДДЕРЖКА/СОВМЕСТИМОСТЬ БРАУЗЕРА
FIREFOX: Версия 31 + (по умолчанию включена)
(Прокладывая путь как обычно.) Дополнительная информация из Mozilla
CHROME: Версия 49 + (по умолчанию включена).
"Эта функция может быть включена в Chrome версии 48 для тестирования, включив функцию экспериментальной веб-платформы. Введите chrome://flags/
в адресную строку Chrome, чтобы получить доступ к этой настройке."
Safari/IOS Safari: Версия 9.1/9.3 (по умолчанию включена).
Opera: Версия 39 + (по умолчанию включена).
Android: Версия 52 + (по умолчанию включена).
IE: Это никогда не произойдет.
Edge: Версия 15 + (по умолчанию включена).
Пользовательские свойства CSS приземлились в Windows Insider Preview build 14986
W3C SPEC
Полная спецификация предстоящих переменных CSS
ПОПРОБУЙТЕ ИСКАТЬ
Скрипт и фрагмент прилагаются ниже для тестирования:
(он будет работать только с поддерживаемыми браузерами.)
:root {
--red: #b00;
--blue: #4679bd;
--grey: #ddd;
--W200: 200px;
--Lft: left;
}
.Bx1,
.Bx2,
.Bx3,
.Bx4 {
float: var(--Lft);
width: var(--W200);
height: var(--W200);
margin: 10px;
padding: 10px;
border: 1px solid var(--red);
}
.Bx1 {
color: var(--red);
background: var(--grey);
}
.Bx2 {
color: var(--grey);
background: black;
}
.Bx3 {
color: var(--grey);
background: var(--blue);
}
.Bx4 {
color: var(--grey);
background: var(--red);
}
<p>If you see four square boxes then variables are working as expected.</p>
<div class="Bx1">I should be red text on grey background.</div>
<div class="Bx2">I should be grey text on black background.</div>
<div class="Bx3">I should be grey text on blue background.</div>
<div class="Bx4">I should be grey text on red background.</div>