Наследование семейства шрифтов с переменной css не работает

Я пытаюсь наследовать глобальное семейство шрифтов в переменной. Однако это не работает.

:root {
  --special-font: sans-serif;
}

html {
  font-family: serif;
}

.highlight {
  font-family: var(--special-font);
}

.special {
  --special-font: inherit;
}


/* .special {
  --special-font: serif;
} */


/* .special .highlight {
  font-family: inherit;
} */
<html>

<body>
  <div>
    <p>
      Standard Font: Serif
    </p>
    <p class = "highlight">
      Highlight Font: Sans Serif
    </p>
  </div>
  <div class = "special">
    <p class = "highlight">
      Special Highlight: should be Serif
    </p>
  </div>
</body>

</html>

Оба закомментированных правила будут работать. Но я бы предпочел не повторяться. Есть ли что-то, что мне не хватает?

Когда вы устанавливаете переменную, вы не можете присвоить ей другое значение позже. Создайте 2 переменные, такие как --standard-font и --highlight-font, и просто используйте font-family: variable. `:root { --special-font: без засечек; --serif-шрифт: с засечками; } html { семейство шрифтов: var (--serif-font); } .highlight { семейство шрифтов: var (--special-font); } .special .highlight { семейство шрифтов: var (--serif-font); }``

Alexandra Batrak 25.11.2022 17:01

Извините за плохой формат кода

Alexandra Batrak 25.11.2022 17:07

@AlexandraBatrak Это был бы обходной путь. Но это неправильно, что переменная не может быть изменена позже. Если я укажу serif вместо inherit в селекторе .special, он будет работать как положено.

Jeanot Zubler 25.11.2022 17:10

Вы правы :D Это работает с .special { --special-font: initial; }

Alexandra Batrak 25.11.2022 17:13
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Разобрался, что происходит, благодаря комментарию, этому вопросу и этому ответу. На самом деле я не устанавливаю переменную так, чтобы она содержала значение inherit, а скорее сообщаю переменной, чтобы она наследовала свое значение.

Чтобы мое семейство шрифтов наследовало шрифт всего документа, я могу установить переменную в initial. Для переменной это пустая строка, тем самым установив для свойства font-family моего абзаца его поведение по умолчанию, то есть inherit.

Другие вопросы по теме