(примечание: этот ответ был обновлен 2014-08-01, чтобы сделать его более подробным, более точным и добавить живую демонстрацию )
Расширение свойств shorttand
В соответствии со спецификацией W3C CSS2.1 ( «Опущенные значения устанавливаются в свои начальные значения» ), следующие свойства эквивалентны:
border: hidden; border-style: hidden;
border-width: medium;
border-color: <the same as 'color' property>
border: none; border-style: none;
border-width: medium;
border-color: <the same as 'color' property>
border: 0; border-style: none;
border-width: 0;
border-color: <the same as 'color' property>
Если эти правила являются наиболее конкретными правилами, применяемыми к границам элемента, то границы не будут отображаться, либо из-за нулевой ширины, либо из-за стиля hidden
/ none
. Итак, на первый взгляд, эти три правила выглядят эквивалентно. Однако они ведут себя по-разному в сочетании с другими правилами.
Границы в контексте таблицы в модели сворачивающихся границ
Когда таблица визуализируется с использованием border-collapse: collapse
, каждая визуализированная граница используется совместно для нескольких элементов (внутренние границы совместно используются как соседние ячейки; внешние границы используются совместно для ячеек и самой таблицы; но также для строк, групп строк, столбцы и группы столбцов имеют общие границы). Спецификация определяет некоторые правила для разрешения пограничных конфликтов :
Границы с border-style
из hidden
имеют приоритет над всеми другими конфликтующими границами. [...]
Границы со стилем none
имеют самый низкий приоритет. [...]
Если ни один из стилей не является hidden
и хотя бы один из них не является none
, то узкие границы отбрасываются в пользу более широких. [...]
Если стили границ отличаются только цветом, […]
Таким образом, в контексте таблицы border: hidden
(или border-style: hidden
) будет иметь наивысший приоритет и будет скрывать общую границу, несмотря ни на что.
На другом конце приоритетов border: none
(или border-style: none
) имеют самый низкий приоритет, за которым следует граница нулевой ширины (потому что это самая узкая граница). Это означает, что вычисленное значение из border-style: none
и вычисленное значение из border-width: 0
по существу одинаковы.
Каскадные правила и наследование
Так как none
и 0
влияют на различные свойства (border-style
и border-width
), они будут вести себя по-разному, когда более конкретное правило определяет только стиль или только ширину. См. Крис ответ для примера.
Хотите увидеть все эти случаи на одной странице? Откройте живую демонстрацию !