Как отмечают другие, концепция вертикального правила не согласуется с оригинальными идеями, лежащими в основе структуры и представления документов HTML. Однако в наши дни (особенно в связи с распространением веб-приложений) существует небольшое количество сценариев, в которых это действительно будет полезно.
Например, рассмотрим горизонтальное навигационное меню, закрепленное в верхней части экрана, аналогично строке меню в большинстве оконных приложений с графическим интерфейсом. У вас есть несколько пунктов меню верхнего уровня, расположенных слева направо, которые при нажатии открывают раскрывающиеся меню. Несколько лет назад, было обычной практикой создавать это с помощью таблицы из одной строки, но это плохой HTML, и широко признано, что правильным решением будет список с сильно настроенным CSS.
Теперь, скажем, вы хотите сгруппировать похожие элементы, но добавьте вертикальный разделитель между группами, чтобы получить что-то вроде этого:
[Item 1a] [Item 1b] | [Item 2a] [Item 2b]
Использование <hr style="width: 1px; height: 100%; ..." />
работает, но может считаться семантически неверным, поскольку вы изменяете, для чего этот элемент фактически используется. Кроме того, вы не можете использовать это в определенных элементах, где HTML DTD допускает только элементы встроенного уровня (например, в элементе <span>
).
Лучшим вариантом будет <span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>
, однако не все браузеры поддерживают свойство CSS display: inline-block;
, поэтому единственная реальная опция на встроенном уровне - это использовать изображение так:
<img src="pixel.gif" alt="|" style="width:1px; height:100%; background:#000; margin: 0 2px;" />
Это дает дополнительное преимущество совместимости с текстовыми браузерами (например, lynx), поскольку вместо изображения отображается символ канала. (Меня по-прежнему раздражает, что M $ IE неправильно использует альтернативный текст в качестве всплывающей подсказки; для этого и нужен атрибут title!)