#html #css #themes #css-variables
Вопрос:
Я определяю переменную css, основанную на другой переменной в элементе :root, и использую ее в некоторых элементах, подобных этому
:root {
--text: var(--primary);
}
p {
color: var(--text);
}
Цель состоит в том, чтобы определить основной цвет на основе html-атрибута, подобного этому
[data-theme-dark] {
--primary: black;
}
[data-theme-light] {
--primary: lightgray;
}
Поэтому всякий раз, когда применяется атрибут темной темы данных, он должен иметь черный текст, а всякий раз, когда применяется атрибут светлой темы данных, он должен иметь серый текст
В моем html я определяю атрибут light в html-теге, но я хочу, чтобы для одного абзаца он использовал темную тему
<html data-theme-light>
<head>...</head>
<body>
<p data-theme-dark>This text should be black</p>
<p>This text should be gray</p>
</body>
</html>
Я ожидал, что это сработает, но в обоих абзацах есть серый текст, хотя он переопределяет переменную --primary
css, как и ожидалось.
Это ошибка с переменными CSS или я делаю что-то не так?
(отказ от ответственности: этот пример сокращен до минимального воспроизведения, поэтому я знаю, что есть другие способы достижения режима света/темноты, но я хочу понять этот конкретный случай)
развернутый пример: https://stackblitz.com/edit/web-platform-ya9nup?file=styles.css
Комментарии:
1.По-видимому, поскольку значение
--text
определяется:root
и получает:root
--primary
, а не p. Or, когда вы вызываете var «—text», он отправляется на:root
сбор значения, и существует его облегченная версия.