Связанные блоки
Воскресенье, 27 декабря, 2009Иногда бывает нужно сделать два блока, у которых будут стыковаться между собой рамки. (Типичная ситуация — заголовок, у которого рамка имеет один цвет, а текст под ним обрамлен рамкой другого цвета, и при этом вся конструкция должна восприниматься как едиое целое). Типичный подход в такой ситуации — использование трех тегов div примерно такого вида:
<div> <h1 style="border: #ccc 1px solid">Заголовок</h1> <div style="border: #888 1px solid; border-top: 0">Текст</div> </div>
Однако имеется более элегантное решение, позволяющее уменьшить число DOM-элементов:
<div style="border: #888 1px solid"> <h1 style="border: #ccc 1px solid; margin: -1px">Заголовок</h1> Текст </div>
Кроме того, такое решение удобно и тем, что не требует дублировать общие свойства CSS (например, выравнивание) для двух различных селекторов (внутреннего div и h1 в первом примере), их можно задавать только для внешнего divа.