5 правил дружественной верстки

NunDesign, неоднократно упоминая войну с дизайнерами-верстальщиками, часто поднимает проблему взаимодействия программистов и “визуализаторов”. Я хотел от себя добавить несколько рекомендаций к дизайнерам-верстальщикам, которые (рекомендации) существенно облегчат жизнь программиста. Вещи на столько элементарные, что на них, зачастую, просто тупо забивают..

1. Не мешать ID и CLASS
Иван Сагалаев в своем блоге как-то писал, что в целом разницы нет, но лучше это разделить следующим образом: ID-ы для программистов, а классы - для дизайнеров.
На примитивном уровне так оно и есть. Но корень вопроса в несколько ином месте. ID подразумевает, что элемент с этим идентификатором уникален, а класс (даже исходя из названия), что элемент относится к определенной группе элементов. То есть для некого уникального элемента страницы можно и нужно дать ID (например #mainmenu). Но для набора информационных блоков давать каждому #infoblock будет ошибкой, блок должен описываться классом. А появляется эта ошибка не явно: дизайнер нарисовал как будет выглядеть блок, верстальщик его заверстал (присвоив ID), а потом код блока многократно был вставлен на страницу.
Другой, менее явный, момент, может жить внутри этого блока. Есть прототип блока (DIV.infoblock) в котором вложен DIV#content. С точки зрения логики: внутри блока может быть только один контент. И все же это несколько противоречивое утверждение, поскольку на странице мы “лежит” несколько элементов имеющих одинаковый уникальный идентификатор.
С точки зрения программиста необходимо и достаточно, чтобы внутри элемента страницы не содержалось нескольких элементов с одинаковыми ID.

2. Придерживаться внутренних стандартов
Если на одном сайте, к примеру, пункты меню имеют классы .menuItem, то на другом тоже желательно использовать то же имя класса. Потому что реиспользовать JS-код станет гораздо проще. То же касается комплексных элементов типа шапки, копирайтов и прочего..

3. Использовать CSS по полной
Плохие примеры использования деклараций:


.menuItem {....}
.submenuItem {....}

Лучше пример:


#mainmenu .menuItem {....}
#submenu .menuItem {....}

и при этом пункты как главного, так и под-меню имеют один и тот же класс (ведь они, что одни, что другие — не больше чем пункты)

Туда же относится замена имени класса при активности элемента. Держать в голове что на что меняется просто никому не надо. Достаточно активному элементу добавить еще один класс, пусть даже с примитивным именем “active”. ИМХО разделение на .menuItem и .menuItemActive по-сути проявление лени и/или некомпетенции.

4. Забыть про !important
Единственный случай, когда эта декларация приемлема: стили описаны в множественных CSS, порядком загрузки которых управлять возможности нет и надо перекрыть стиль, приходящий из внешнего источника, изменять который просто нет возможности. Все.
В остальных случаях достаточно четко и грамотно задать CSS-правила для элемента. Зачастую !important появляется от каскадной лени: сначала лень нормально описать начальные правила, потом лень переделывать, а потом лень искать где что было определено..

5. Не использовать inline-стили для элемента
Точнее их использовать можно, но минимально. Если inline устанавливается больше 1-го свойства — вынести декларацию в отдельный класс и добавить элементу стиль. Если одно свойство устанавливается на 2 и больше элементов — тоже вынести в отдельный класс. Это придаст ясности (например img class=”inlineImage right hidden” выглядит явно лучше чем img class=”inlineImage” style=”float:right; display:none;”) и даст возможность программисту: а) пользоваться инлайн-стилями монопольно; б) по имени класса получать группы элементов.

Как видите, правила простые, не требующие большого перенапряжения с креативной стороны, но, поверьте, они очень и очень облегчают жизнь клиент-сайд программистам :)

RSS feed | Trackback URI

16 Комментариев »

Comment от jerril
2007-09-21 04:19:01

больше смахивает не на статью а на крик души ))

Comment от Eugene Bond
2007-09-21 08:14:26

1. Это не статья, а запись в блоге
2. У себя на работе я все (почти все) это уже победил, так что это скорее рекомендации тем, кто с этим только начинает сталкиваться
3. Мой блог. Хочу - пишу, хочу - кричу ;)

 
 
Comment от vassa
2007-09-25 03:20:28

все одобряю кроме этого:
4. Забыть про !important

меня эта фича спасает постоянно..

Comment от Eugene Bond
2007-09-26 13:11:44

Случай, когда приемлемо использование !important я описал.
Если Ваш случай не “от лени” — приведите его, плиз.

 
 
Comment от Строитель
2007-09-25 14:03:16

Я бы к этим пяти ещё парочку своих маленьких добавил

Comment от Eugene Bond
2007-09-26 13:12:53

Может огласите их? Действительно, было бы очень интересно!

 
 
Comment от Salt N
2007-09-28 07:08:23

Сначала сверстать кроссбраузерно шкурку блога, а уж потом писать статьи по верстке вы не пробовали? :-)

Comment от Eugene Bond
2007-09-28 11:18:50

А я дизайном блога вообще не занимаюсь :-)
Все вопросы к автору скина. Я программер, а не верстальщик.

 
 
Comment от драник
2007-09-30 02:20:09

да нормальная статья, не слушайте их

 
Comment от Anny
2007-09-30 21:10:53

Спасибо, полезные рекомендации

 
Comment от Kvazar
2007-10-04 13:15:50

эта страница в IE6 разваливается ;)

Comment от Eugene Bond
2007-10-04 18:50:52

Повторюсь:

А я дизайном блога вообще не занимаюсь :-)
Все вопросы к автору скина. Я программер, а не верстальщик.

Comment от Kvazar
2007-10-04 19:35:19

Понятно ;)
просто как-то в глаза бросилось..

(Comments wont nest below this level)
Comment от Eugene Bond
2007-10-05 07:47:13

Я вот не поленился, посмотрел как оно в эксплорере: таки да, то ли PRE то ли CODE криво обрабатывается.

[upd] не, там че-то на сабпейдже глобально съезжает. когда-нибудь посмотрю чего это оно!

 
 
 
 
Comment от Арника
2007-11-13 03:08:49

А что такое дружественная верстка?

 
Comment от Костя
2008-01-31 12:44:08

Спасибо за советы, думаю, что как для новичком, так и для более осведомленных - данная инфа будет на пользу!

 
Имя (обязательно)
E-mail (required - never shown publicly)
URI
Ваш комментарий (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.