На Главную

К вопросу о div’ной верстке. Продолжение.

November 20th, 2007 by Yuriy Drozdov

Прошлая статья имела небольшой резонанс, который заключается в ссылке на нее от LifeStyle, а также в нескольких комментариях. Хотел выразить Владимиру благодарность за замечания в комментариях.

Итак, продолжим.

Пример 2.

CSS:
  1. .style24 { 
  2.     color: #70c221;
  3.     font-weight: bold;
  4. }
  5.  
  6. .style26 {
  7.     color: #A4A4A4;
  8.     font-weight: bold;
  9. }

HTML:
  1. <table width="83" border="0" cellpadding="0" cellspacing="2">
  2.     <td width="12"><img src="/img/online.gif" width="10" height="10" alt="" /></td>
  3.     <td width="65" class="style24">Online</td>
  4. </tr>
  5. </table>
  6.  
  7. <table width="83" border="0" cellpadding="0" cellspacing="2">
  8.     <td width="12"><img src="/img/offline.gif" width="10" height="10" alt="" /></td>
  9.     <td width="65" class="style26">Offline</td>
  10. </tr>
  11. </table>

В результате выполнения этого куска кода получим сдедующее:

online offline image

Для одного слова и картинки очень много html кода. Неправда ли? Будем это исправлять.

Картинку сделаем фоновой и вынесем этот код в css, а table поменяем на div. Нужно отметить, что данные блоки не представляют из себя список и они не обязательно будут идти один за другим. Если бы они представляли из себя список, то следуя семантике html необходимо использовать для их представления ненумерованный список ul, а изображение задавать с помощью свойства list-style-image.

CSS:
  1. .online {
  2.     /* color и font-weight, свойства взятые из .style24 */
  3.     color: #70c221;
  4.     background: #fff url('../img/online.gif') no-repeat 0 2px; /* зададим отступ фонового изображения от верхнего края */
  5. }
  6.  
  7. .offline {
  8.     /* color и font-weight, свойства взятые из .style26 */
  9.     color: #A4A4A4;
  10.     background: #fff url('../img/offline.gif') no-repeat 0 2px; /* зададим отступ фонового изображения от верхнего края */
  11. }
  12.  
  13. .offline, .online {
  14.     font-weight: bold;
  15.     padding-left: 14px; /* делаем отступ, чтобы текст не был поверх изображения, 10 - ширина изображения и 2+2 от cellspacing="2" */
  16.     margin: 2px; /* компенсируем cellspacing="2" */ 
  17.     font: 11px/11px; /* зададим высоту шрифта и высоту строкового блока*/
  18. }

Использую объявленные выше css классы, html код будет выглядеть следующим образом:

HTML:
  1. <div class="online">Online</div>
  2. <div class="offline">Offline</div>

Если таких блоков на странице будет несколько, то уменьшение веса страницы сразу будет заметно.

Пример 3

HTML:
  1. <table border="1" cellpadding="10">
  2. <caption>New Vectra Sedan</caption>
  3.     <th rowspan="2">Наименование</th>
  4.     <th colspan="3">Двигатель</th>
  5. </tr>
  6. <tr>   
  7.     <th>Z1,6 XEP</th>
  8.     <th>Z1,8 XER</th>
  9.     <th>Z 2,2 SE</th>
  10. </tr>
  11.     <th>Мощность двигателя, л.с.</th>
  12.     <td>105</td>
  13.     <td>140</td>
  14.     <td>147</td>
  15. </tr>
  16.     <th>Уровень комплектации</th>
  17.     <td>Essentia</td>
  18.     <td>Essentia</td>
  19.     <td>Elegance II </td>
  20. </tr>
  21.     <th>Коробка передач   </th>
  22.     <td colspan="3">механическая / автоматическая</td>
  23. </tr>
  24.     <th>ABS</th>
  25.     <td>+</td>
  26.     <td>+</td>
  27.     <td>+</td>
  28. </tr>
  29. </table>

Данный код выведет следующее:

table

Что хотелось бы поменять в данном коде? Ничего. Все сверстано в соответствии со спецификацией. Нет никаких причин верстать табличные данные не таблицой.

Вы не согласны?

Автор: Yuriy Drozdov

Похожие статьи:

RSS feed | Trackback URI

10 Comments »

Comment by vladm Subscribed to comments via email
2007-11-20 17:53:16

:) Эта статья уже посерьезнее будет предыдущей, но все какие-то у тебя примеры элементарные… Ну мож оно так и лучше, от простого к сложному… Мож и в правду кому такое пригодится.

 
Comment by anycolor Subscribed to comments via email
2007-11-20 22:59:15

2 пример, как на меня расходится с семантикой. Такие вещи надо верстать через с указанием list-style для того, чтобы вместо точки отображалась нужная картинка.

Comment by anycolor Subscribed to comments via email
2007-11-20 23:01:30

Блог повырезал хтмл теги. Суть в том, что нужно верстать списками, а не блоками. Я бы верстал такую картинку списком, особенно, если внизу были бы еще другие пункты.

 
Comment by y.drozdov
2007-11-21 15:09:41

это не список, чтобы его верстать списком.

Comment by anycolor Subscribed to comments via email
2007-11-21 15:20:17

Тогда, ИМХО, это следовало явно указать. Или, например, прокомментировать, что делать с этим, в случае, если это список.

Comment by y.drozdov
2007-11-21 15:22:01

сейчас поправим, спасибо

(Comments wont nest below this level)
Comment by anycolor Subscribed to comments via email
2007-11-28 04:44:05

Спасибо за исправление.

 
 
 
 
 
Comment by Настя
2007-11-22 09:28:50

Будем поправлять спасибо!!!

 
Comment by vladm Subscribed to comments via email
2007-11-22 10:54:12

Хочу заметить еще такой факт, что если ты сделаешь фоновые буллеты покрупнее, то ты тут же столкнешся с проблемой вертикального выравнивания. Потому, кстати, зачастую такие вещи делают таблицей! :) Потому что так проще, и выравнивание поддерживается на уровне табличных тегов без всяких плясок с бубнами в CSS. Так что думаю надо прилепить перекрестную ссылку на твою статью по вертикальному выравниванию, а так же указать о потенциальной проблеме прямо в статье.

Comment by y.drozdov
2007-11-22 18:14:09

Потому что так проще, и выравнивание поддерживается на уровне табличных тегов без всяких плясок с бубнами в CSS

Применимо к данному примеру, там особых танцев не будет :)

Так что думаю надо прилепить перекрестную ссылку на твою статью по вертикальному выравниванию, а так же указать о потенциальной проблеме прямо в статье.

Хорошая идея, так и сделаю.

 
 
 
Имя (required)
E-mail (обязателен - не будет показан)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> in your comment.