Перейти к основному содержимому

Переопределение глобальной переменной локальной

Глобальные переменные можно использовать в любом месте документа, тогда как локальные переменные можно использовать только внутри селектора, в котором они объявлены.

Иногда вам нужно, чтобы переменная менялась только в определённой части страницы.

Для этого можно повторно объявить переменную внутри более специфичного селектора. Когда вы используете var() внутри этого селектора, будет использовано локальное значение вместо глобального. Локальная переменная переопределяет глобальную переменную для этого селектора.

Пример

Здесь селектор .note повторно объявляет --primary-bg-color как красный. Внутри .note используется локальное значение вместо глобального синего.

Prompt
Создайте страницу с CSS-переменными. Определите --primary-bg-color (#1e90ff) и --primary-color (#ffffff) в :root. Установите фон body в --primary-bg-color. Добавьте .container с цветом текста --primary-bg-color, белым фоном и отступом. Задайте .container h2 нижнюю границу с помощью --primary-bg-color. Внутри .container добавьте элемент .note, который заново объявляет --primary-bg-color как красный (переопределяя глобальное значение), и использует его для сплошной рамки 1px с отступом 10px.
Output: полная HTML-страница

Добавление новой локальной переменной

Если переменная будет использоваться только в одном месте, можно объявить совершенно новую локальную переменную вместо переопределения глобальной.

Пример

Здесь новая локальная переменная --note-border-color объявлена внутри .note и используется только для рамки этого элемента.

Prompt
Создайте страницу с CSS-переменными. Определите --primary-bg-color (#1e90ff) и --primary-color (#ffffff) в :root. Установите фон body в --primary-bg-color. Добавьте .container с цветом текста --primary-bg-color, белым фоном и отступом. Задайте .container h2 нижнюю границу с помощью --primary-bg-color. Внутри .container добавьте элемент .note, который объявляет новую локальную переменную --note-border-color как красную и использует её для сплошной рамки 1px с отступом 10px.
Output: полная HTML-страница