Семантика и корректность в CSS
Так сложилось, что в последние время стали путать семантику с установившимися правилами назначать корректные имена. Такие обозначения, как class="left"
и class="clear"
считают несемантическими, хотя в действительности охват семантики не распространяется так далеко.
Несемантический код
Следующий код абсолютно не верен, к тому же он несемантический, то есть ошибочно выбранные элементы используются не по назначению.
HTML
<div class="nav-link"><a href="/">Home</a></div>
<div class="nav-link"><a href="/about/">About</a></div>
<div class="page-title">About</div>
<div>This is some page text about some stuff...</div>
Бессмысленный (некорректный) код
Код без сомнения семантически верен, только он использует нелепые классы:
HTML
<div class="border">
<h2 class="red">This is a heading</h2>
</div>
Семантика относится к элементам…
…а не к именам, которые им назначаются. В использовании правильно выбранных элементов по их прямому назначению и заключается суть семантики. Стандарты обозначения этих элементов целиком связаны с корректностью (sensibility).
Семантика устанавливает стандарты, отойти от которых довольно сложно. Заголовки размечаются <h1–6>
, списки <ul/ol/dl>
и так далее. Однако нельзя определить правила, по которым называют идентификаторы и классы. <div id="contact">
, <div id="kontact">
и <div id="contact-info">
- все имеют различные имена, но также все в равной степени семантически верны. Все три являются примерами семантического и корректного кода.
Однако взгляните на следующие примеры: <div id="bottom">
, <div id="lower-area">
и <div id="b">
. Они имеют семантически верный код, но бессмысленные имена.
Будьте благоразумны.
Следуйте семантике, хотя бы потому, что веб-стандарты – это хорошо. Назначение имен, однако, целиком зависит от вас, можете называть элементы так, как хотите. <div id="a">
, <div id="b">
и <div id="c">
- все эти названия возможны, но они не совсем корректны.
Я действительно видел такую разметку и доводы разработчика были такими: мне нравится, когда моя разметка как можно меньше, и я знаю, какие функции .a
, .b
и .c
выполняют.
С одной стороны - это корректно и терпимо, с другой - совсем неблагоразумно. Он возможно и знает что выполняют .а
, .b
и .с
, но как насчет человека, которому достанется этот проект? Несмотря на то, что его доводы и верны (разметка небольшая), первые впечатления человека, который увидит его код: «какого черта он придумал это?». Всегда кодируйте, как будто вы работаете в команде, даже если это не так.
Заключительное слово
Семантика и корректность не одно и тоже. Любой, кто скажет вам, что следующий код class="left"
несемантический, неправ (код некорректный). Будьте благоразумны и следуйте семантике. Выбирайте описывающие имена. ID/class следует назначать настолько небольшими, насколько это возможно, а если необходимо длинными.
Комментарии к статье