Ответ 1
Как говорится в их имени, это только для семантических целей. Это для улучшения автоматической обработки документов. Автоматическая обработка происходит чаще, чем вы понимаете - каждый рейтинг сайта из поисковых систем происходит от автоматической обработки всего веб-сайта.
Если вы посещаете веб-страницу, вы, как человек, можете сразу (визуально) различать все элементы страницы и, что более важно, понимать контент.
Однако машины тупые и не могут этого сделать:
Представьте себе веб-гусеничный или экранный анализатор, который пытается анализировать вашу веб-страницу с помощью div повсюду. Как они узнают, какую часть документа вы намеревались стать навигацией или главной статьей или каким-то не столь важным сайдэтом? Они могут угадать, анализируя структуру вашего документа, используя некоторые общие критерии, которые являются подсказкой для определенного элемента. Например. a ul
список внутренних ссылок, скорее всего, представляет собой какую-то навигацию по страницам. Однако, если вместо этого будет использоваться элемент nav
, машина сразу же узнает, какова цель этого элемента.
Пример. Вы, как пользователь (читаете страницу, не видя фактической разметки), не волнует, если элемент заключен в тег <i>
или <em>
. Вероятно, в большинстве браузеров он будет отображаться как курсивный текст, и пока он выделяется из текста, чтобы легко его распознать, вы в порядке с ним.
Тем не менее, существует большая разница в терминах семантики: <i>
просто означает italic - это презентационный намек для браузера и необязательно содержит более глубокую семантическую информацию. <em>
однако означает подчеркивание, которое семантически указывает на важную часть информации. Теперь браузер больше не привязан к курсивной инструкции, но может визуализировать его визуально курсивом или полужирным шрифтом или подчеркнутым или другим цветом... Для людей с ослабленным зрением на экране читатели могут поднять голос - какой бы метод ни казался наиболее подходящим конкретную ситуацию, чтобы подчеркнуть эту важную информацию.
// machine: okay, this structure looks like it might be a navigation element?
<div class="some-meaningless-class"><ul><li><a href="internal_link">...</div>
// machine: ah, a navigation element!
<nav class="some-meaningless-class"><ul><li><a>...</nav>