Не так давно я писал о новой функции if(), которая появилась в 137й версии Chrome и Edge. В частности, там упоминалась функция
style(), с помощью которой можно проверять значения свойств. В посте был такой пример кода:.toast {
background-image: if(
style(color: green): url('/success.svg');
style(color: orange): url('/warning.svg');
style(color: red): url('/danger.svg');
else: url('/info.svg')
);
}
.toast--success {
color: green;
}
.toast--warning {
color: orange;
}
.toast--danger {
color: red;
}Этот пример на данный момент работать не будет! Согласно спецификации CSS Conditional Rules Module Level 5, функция
style() может принимать декларации, валидные свойства и пользовательские свойства. Это значит, что color — допустимое значение.Но на данный момент браузеры поддерживают только пользовательские свойства в
style(). Об этом дважды указано в статье про использование контейнерных запросов на MDN: первое упоминание, второе упоминание.При этом ошибки не будет, применится значение, указанное в блоке
else. То есть вне зависимости от значения свойства color, у background-image всегда будет значение url('/info.svg'). Рабочий пример будет выглядеть так:.toast {
background-image: if(
style(--color: green): url('/success.svg');
style(--color: orange): url('/warning.svg');
style(--color: red): url('/danger.svg');
else: url('/info.svg')
);
color: var(--color, inherit);
}
.toast--success {
--color: green;
}
.toast--warning {
--color: orange;
}
.toast--danger {
--color: red;
}#css