До сих пор мы говорили только о применении видимых стилей рамок, таких как solid или outset. Теперь посмотрим, что происходит, когда свойству border-style присваивается значение none:
p {margin: 5px; border-style: none; border-width: 20px;}
Ширина рамки равна 20px, однако для стиля задано значение none. В этом случае аннулируется не только стиль рамки, но и ее ширина. Рамка просто прекращает существование. Почему? Если помните, мы уже говорили, что рамка, имеющая стиль none, не существует. Эти слова были выбраны с большой тщательностью, потому что они помогают объяснить происходящее. Поскольку рамки не существует, она не может иметь ширины, так что ширине автоматически присваивается значение 0 (нуль) независимо от того, что вы пытаетесь задать. В конце концов, если стакан пуст, его нельзя описывать как наполовину ничем не заполненный. Можно обсуждать объем содержимого стакана, только если оно действительно в нем есть. Точно так же разговор о ширине рамки имеет смысл только в контексте существующей рамки.
Об этом важно помнить, потому что отсутствие объявления стиля рамки – очень распространенная ошибка. Это ведет к недовольству авторов, потому что на первый взгляд стили выглядят заданными правильно. Исходя из следующего правила ни один из элементов h1 вообще не будет иметь никакой рамки, не говоря уже о рамке шириной 20 пикселов:
h1 {border-width: 20px;}
По умолчанию свойство border-style имеет значение none, и отсутствие объявления стиля абсолютно аналогично объявлению border-style: none. Поэтому, если требуется, чтобы рамка появилась, надо объявить ее стиль.