Как интерпретируется «контур: наследовать 0»?

Согласно w3schools синтаксис outline следующий:
outline: <color> <style> <width>; и любой из трех может отсутствовать.

И значение inherit является допустимым значением либо трех, либо единственное outline: inherit означает, что оно должно наследовать все три.

Я спрашиваю об этом, потому что работаю над оптимизатором свойств для минимизатора CSS. Согласно приведенной выше ссылке,
outline: inherit none 3px эквивалентно outline: inherit 3px, а
outline: invert inherit 3px также эквивалентно outline: inherit 3px,
но результат кажется слишком двусмысленным.

Итак, вопрос в том, как браузеры интерпретируют outline: inherit 0px? Они присваивают inherit цвету или стилю?


person Venemo    schedule 16.02.2014    source источник
comment
Пожалуйста, не связывайте «согласно W3C» с w3schools.com никогда, потому что: w3fools. ком. А что касается самого вопроса: Каков результат собственного тестирования в разных браузерах?   -  person CBroe    schedule 16.02.2014
comment
@CBroe Я полностью с вами согласен, особенно потому, что, как вы видите, люди начинают смешивать Консорциум Всемирной паутины (W3C) и этот сторонний сайт.   -  person idmean    schedule 16.02.2014
comment
Не обращайте внимания на путаницу между W3C и W3Schools — где W3Schools вообще говорит, что значение inherit является допустимым значением любого из трех?   -  person BoltClock    schedule 16.02.2014
comment
Извините, у меня сложилось впечатление, что w3schools как-то связан с W3C.   -  person Venemo    schedule 16.02.2014


Ответы (1)


Это игнорируется. Это текущая практика браузера и предполагаемый принцип CSS: для сокращенной нотации, такой как outline, ключевое слово inherit разрешено в качестве значения (делая наследование всех подсвойств), но не в сочетании с каким-либо другим значением. Причина достаточно очевидна: иначе значение не имело бы однозначной интерпретации. В значении inherit 0 значение 0 может быть только значением для outline-width, а inherit может быть значением для outline-style или outline-color.

Этот принцип упоминается в приложении к спецификации CSS 2.1 по адресу C.3.1< /а>. Теоретически приложение С является информативным описанием изменений, а не нормативным, и здесь оно не отражает фактического изменения. То есть это было напутано: намерение было описано, но нормативно CSS 2.1 не имеет этого принципа и считал бы outline: inherit 0 действительным (но W3C CSS Validator его отвергает). См. to Этот шрифт : действительный синтаксис сокращенного свойства? (Мое прочтение спецификации говорит о том, что да, но половина моих установленных браузеров не согласны.) (что касается той же проблемы, что и сокращение font).

Если вы хотите, чтобы все свойства outline были унаследованы, но ширина была установлена ​​​​на ноль (что было бы несколько странно), вам нужно два объявления

outline: inherit;
outline-width: 0;
person Jukka K. Korpela    schedule 16.02.2014
comment
Спасибо Юкка за ваш ответ, я не знал, что inherit нельзя использовать внутри сокращенных объявлений. - person Venemo; 16.02.2014