Единственный способ получить то, что вы хотите, это убедиться, что значение недопустимо, поэтому браузер проигнорирует его и вернется к значению по умолчанию:
::selection {
background-color: something_invalid;
}
<p>a b c</p>
<div>
<p>x y z</p>
</div>
К сожалению, это невозможно при использовании var(--variable)
, поскольку значение никогда не будет недействительным.
С Спецификация У нас есть следующие шаги, чтобы найти значение:
Чтобы заменить var () в значении свойства:
- Если пользовательское свойство, названноеПервый аргумент функции var () испорчен анимацией, а функция var () используется в свойстве animation или в одной из его длинных строк, обрабатывая пользовательское свойство как имеющее его начальное значение для остальной части этого алгоритма.
- Если значение настраиваемого свойства, названного первым аргументом функции var (), отличается от начального значения, замените функцию var () значением соответствующего настраиваемого свойства.
- В противном случае, если функция var () имеет запасное значение в качестве второго аргумента, замените функцию var () на запасное значение.Если в резерве есть какие-либо ссылки на var (), замените их.
- В противном случае свойство, содержащее функцию var (), будет недопустимым во время вычисления значения.
(2) и (3) тривиальны и всегда дают нам значение.(1) попросите нас рассматривать значение пользовательского свойства как initial
, и мы попадем в (3) или (4).
Для (4) мы также можем прочитать из той же спецификации:
Объявление может быть недопустимым во время вычисления значения, если оно содержит var (), которая ссылается на пользовательскийсвойство с его начальным значением , как объяснено выше, или если оно использует допустимое настраиваемое свойство, но значение свойства после замены его функций var () будет недопустимым .Когда это происходит, вычисленное значение свойства является либо унаследованным значением свойства, либо его начальным значением в зависимости от того, является ли свойство унаследованным или нет, соответственно, как если бы значение свойства имелобыл задан как ключевое слово unset.
background-color
не наследуется, поэтому будет использовать его начальное значение, равное transparent
, поэтому вы не видите цвета.
Теперь, если мы рассмотрим запасные варианты (3)
- с использованием
initial
означает, что начальное значение цвета фона настолько прозрачно - с использованием
inherit
означает наследование цвета, но ничего нетчтобы унаследовать такую прозрачность снова - , используя
unset
, мы получим сочетание inherit
и initial
Ключевое слово unset CSS сбрасывает свойство в его унаследованноезначение, если оно наследует от своего родителя, и его начальное значение, если нет.Другими словами, он ведет себя как ключевое слово в первом случае и как исходное ключевое слово во втором случае ref
Вашединственный шанс, вероятно, будет использовать revert
, но поддержка очень низкая, и я не уверен, будет ли она работать.
Ключевое слово revert CSS возвращает каскадное значениесвойства от его текущего значения до значения, которое свойство имело бы, если бы текущий элемент стиля не внес изменения в текущий элемент.Таким образом, оно сбрасывает свойство к его унаследованному значению, если оно наследует от своего родителя или к значению по умолчанию, установленному таблицей стилей агента пользователя (или пользовательскими стилями, если таковые существуют). ref
Обновление
Согласно комментариям ниже, это также невозможно с revert
.