Главная → Техноблог → Советы и правила по созданию качественной HTML-верстки
Советы и правила по созданию качественной HTML-верстки
Март, 16. 2010 годВ данной статье вы узнаете о некоторых правилах, которые мы используем в нашей студии при верстке шаблонов, и, возможно, почерпнете что-то полезное для себя.
-
Прежде чем приступить к верстке, следует детально изучить элементы во всех предоставленных шаблонах и найти схожие по стилю блоки. Это позволит в разы сократить CSS.
-
Отслеживать процесс верстки лучше всего в самом проблемном браузере. На данный момент таковым является IE6
-
Ключевым и уникальным блокам на странице следует присваивать идентификатор, а в css описании отталкиватся от идентификатора. Это позволит использовать одинаковые имена классов в разных блоках.
Пример:
<div id="maincol"> <div class="block"> <p>В css описании следует отталкиватся от идентификатора. Это позволит использовать одинаковые имена классов в разных блоках.</p> </div> </div>
не правильно:
div.block { /* описание свойств ... */ }
правильно:
#maincol div.block { /* описание свойств ... */ }
-
Старайтесь использовать абстрактные имена классов, т.к. возможно их последующее использование для блоков другого смыслового содержания.
Пример:
не правильно:
<div class="usefull_tips"> <div class="tip"> <p>Абстрактные имена классов вносят меньше путаницы.</p> </div> </div>
правильно:
<div class="items"> <div class="item"> <p>Абстрактные имена классов вносят меньше путаницы.</p> </div> </div>
-
Старайтесь использовать связные классы для схожих по стилю блоков.
Пример:
не правильно:
HTML:
<div class="type1"> <p>С помощью связных классов можно сократить размер CSS-файла.</p> </div> <div class="type2"> <p>Чем меньше дублирующих блоков в CSS-файле - тем лучше</p> </div>
правильно:
HTML:
<div class="block type1"> <p>С помощью связных классов можно сократить размер CSS-файла.</p> </div> <div class="block type2"> <p>Чем меньше дублирующих блоков в CSS-файле - тем лучше</p> </div>
CSS:
div.type1 { margin:1em 0; font-size:1.2em; color:red; } div.type2 { margin:1em 0; font-size:1.2em; color:blue; }
CSS:
div.block { margin:1em 0; font-size:1.2em; } div.type1 { color:red; } div.type2 { color:blue; }
-
Старайтесь давать осмысленные имена классам и не перегружать их названия излишними данными для облегчения понимания верстки сторонними лицами
Пример:
не правильно:
HTML:
<div id="header"> <ul class="head_menu"> <li>пункт 1</li> <li>пункт 2</li> <li>пункт 3</li> </ul> </div>
правильно:
HTML:
<div id="header"> <ul class="menu"> <li>пункт 1</li> <li>пункт 2</li> <li>пункт 3</li> </ul> </div>
CSS:
#header div.head_menu { /* some css here... */ }
CSS:
#header div.head { ... }
-
Не следует использовать графику там, где можно спокойно обойтись текстовыми символами.
-
Не рекомендуется использовать параметр style в HTML тегах.
-
При описании размера шрифта и межстрочного интервала лучше использовать относительные единицы измерения — em.
-
Старайтесь в CSS-описании блоков сортировать свойства по следующим группам:
- свойства текста и шрифта
- оформление
- размеры и отступы
- позиционирование
- поведение
-
Настоятельно не рекомендуется стилизовать под единичное использование теги акцентного оформления текста (strong, em, small, span, sup, sub и т.д.) в тех местах где предполагается размещение динамического контента.
-
Не стоит полностью отказываться от использования таблиц в пользу слоев: в некоторых случаях они более уместны.
-
Стилизуйте элементы, по возможности, на более высоком уровне вложенности.
Пример:
<h2><a href="#">Стилизованный заголовок</a></h2>
не правильно:
h2 { /* пусто */ } h2 a { font-size:2em; text-decoration:normal; }
правильно:
h2 { font-size:2em; text-decoration:normal; } h2 a { /* пусто */ }
-
Не оставляйте ссылки без содержимого. Также, рекомендуется использовать параметра title в ссылке, если в стиле содержимое самой ссылки скрывается. Для того, чтобы скрыть в стиле содержимое из ссылки используйте свойство text-indent.
Пример:
не правильно:
<div class="logo"> <a href="#"></a> </div>
правильно:
<div class="logo"> <a href="#" title="на главную">Название сайта</a> </div>
-
Используйте тег img только для контентных изображений. Таковыми считаются: изображения, которые сопровождают тексты, аннотации и т.д., банеры, счетчики.
-
Предпочтительно подбирать нужные теги под логическую разметку страницы, а не создавать ее через css стили. Для лучшего понимания использования тегов, при верстке рекомендуется сначала сделать HTML-каркас без подключения CSS. Если посмотреть на такую страницу из веб-браузера, то будет наглядно видно, где возникают нелогичные ситуации, например «слипание» текста.
Пример:
не правильно:
<div class="head">Заголовок</div> <div class="menu"> <a href="#">пункт 1</a> <a href="#">пункт 2</a> ... </div>
правильно:
<h1>Заголовок</h1> <ul class="menu"> <li><a href="#">пункт 1</a></li> <li><a href="#">пункт 2</a></li> ... </ul>
-
Использовать элементы input, select и textarea в связке с label. Связка осуществляется посредством параметров for в label и id в вышеприведенных элементах.
Пример:
<label for="firstname">Имя:</label> <input type="text" name="firstname" id="firstname" />
-
Если в дизайне планируется размещение наименований полей формы в самих полях, следует использовать тег label вместо прописывания значений в параметр value.
Пример:
не правильно:
<input type="text" name="login" value="логин" /> <input type="password" name="pass" value="пароль" />
правильно:
<label for="login">логин:</label> <input type="text" id="login" name="login" /> <label for="pass">пароль:</label> <input type="password" id="pass" name="pass" />
-
Для удобства навиции по полям формы рекомендуется использовать параметр tabindex в элементах форм.
-
Не рекомендуется использовать инлайновые и блоковые элементы в одном уровне вложенности.
Пример:
не правильно:
<div class="text"> <a href="#">навигация</a> <p>Инлайновые и блоковые элементы не стоит располагать рядом</p> </div>
правильно:
<div class="text"> <p><a href="#">навигация</a></p> <p>Инлайновые и блоковые элементы не стоит располагать рядом</p> </div>
-
Для стилизации отступов у абзацев нужно использовать свойство margin.
-
При стилизации блоков, содержащих динамический контент недопустимо задавать свойство height.
Спасибо. Есть что подчеркнуть для себя.
Спасибо за советы.
Жаль что не привели пример уровненных стилей, то есть можно:
.header — какое нибудь оформление
.header .header — другое
.header .header .header — третье
Таким образом, можно сделать комбинацию вызывая 1 класс. И в зависимости от глубины, можно создать объект (например: шапка сайта с двумя боками) и тд…