Семантическая вёрстка

Семантическая вёрстка HTML-документа подразумевает использование тегов по прямому назначению, т.е. если вам нужен заголовок — то вот тег <h1> и собратья, необходимо табличное представление данных — используйте тег <table> и только его.

Иногда, избавляясь от табличной верстки, доходят до абсурда, и тег <table> становится изгоем, и его перестают использовать даже для табличного представления данных. Не стоит повторять эту ошибку.

Забегая чуть-чуть вперёд, стоит упомянуть теги из спецификации HTML5: <article>, <aside>, <header>, <footer>, <menu>, <section> и т.д. — используйте их, не бойтесь.

Не бояться — это правильно, но использовать тоже надо с умом. Рекомендую ресурс https://html5doctor.com/ — очень хорошо и подробно расписано о нововведениях спецификации HTML5.

И ещё пару интересных ресурсов в нагрузку:

Старайтесь избегать избыточных элементов на странице, большинство HTML-страниц грешат лишними блочными элементами:

<div id="header">
    <div id="logo">
        <h1><a href="/">Мой блог</a></h1>
    </div>
    <div id="description">
        <h2>Тут я делюсь своими мыслями</h2>
    </div>
</div>

Данную конструкцию можно легко упростить, и при этом код станет более читаемым, изменения в CSS будут минимальными, или даже не потребуются:

<header>
    <h1>
        <a href="/">Мой блог</a>
    </h1>
    <h2>Тут я делюсь своими мыслями</h2>
</header>

В английском языке есть термин «divits» – сим термином награждают HTML-разметку с чрезмерным использованием div’ов без потребности, я же называю такие творения «дивными». Обычно таким грешат новички, которые для применения стилей CSS оборачивают элементы в div’ы, что и приводит к их размножению без нужды.

Ещё одним обязательным пунктом для создания «правильного» HTML является использование названий классов и идентификаторов, которые однозначно говорят нам о содержимом элемента, а не о каких-либо нюансах оформления. Приведу пример:

Плохо

red, green и т.д.

в какой-то момент захотите дизайн через CSS поменять – и элемент с классом «red» станет синим; или возитесь, бегаете по всем страницам и меняйте red на blue, чтоб потом ещё раз начать по новой

wide, small и т.д.

сегодня широкий, а завтра?

h90w490

наверное, это элемент с высотой 90px и шириной 490px; или я ошибаюсь? а в смартфоне тот же класс влезает в экран?

b_1, px_9

ничего не говорящие названия, которые завтра вылетят из памяти

color1, color2, ...

иногда встречается для «скинованных» сайтов, но создаются такие классы во имя лени

element1...20

такое тоже встречается и ничем хорошим не пахнет

И примеры правильного именования:

Хорошо

logo, content

логотип, основной контент

menu, submenu

меню и подменю

even, odd

чётный и нечётный элементы списка (хотя для подобных задач проще использовать CSS-операторы :nth-child(even) и :nth-child(odd), опять же из-за возможного в будущем сдвига элементов)

navigation

постраничная навигация

copyright

информация о лицензировании

Есть ещё один момент – это форматирование HTML- и CSS-кода. Я не буду заострять на нём внимание, но весь код в книге будет отформатирован отступами, и, возможно, это даст свои плоды в ваших творениях.

Чуть не забыл – не равняйтесь на классы вида p-X, m-X, которые вы встретите в Bootstrap или Tailwind. Концепция «utility first» отлично подходит для CSS фреймворков, но для разработки без использования оных подобное именование неинформативно.

Last updated