Открыть меню    

Семантика и корректность в 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 следует назначать настолько небольшими, насколько это возможно, а если необходимо длинными.

Комментарии к статье