Тег html в HTML: корневой элемент и атрибут lang

Тег <html> - корневой элемент страницы: он идёт сразу после <!DOCTYPE html> и оборачивает собой весь остальной код. Внутри него - ровно два прямых потомка: <head> со служебной информацией и <body> с тем, что видит посетитель. Сам по себе тег ничего не отображает - но у него есть один атрибут, от которого реально зависит поведение страницы.

HTML
<!DOCTYPE html>
<html lang="ru">
  <head>...</head>
  <body>...</body>
</html>

Атрибут lang - единственный, который важен

lang сообщает браузеру и поисковику, на каком языке написана страница. От него зависит произношение текста экранными дикторами для незрячих пользователей, язык проверки орфографии в браузере, а ещё - какие CSS-правила сработают для конкретного языка через селектор :lang(). Перенос длинных слов по слогам (hyphens: auto) тоже завязан на язык, но здесь стоит быть честным: сама расстановка переносов у разных браузеров поддержана для разных языков неодинаково - например Chrome умеет переносить по слогам далеко не любой язык, поэтому в живом примере ниже показан более надёжный эффект - смену кавычек.

Пример: как lang меняет оформление текста

Нажмите на переключатель - в русской типографике кавычки-ёлочки «такие», в английской - прямые "такие". Браузер выбирает нужные через CSS-селектор :lang(), который смотрит именно на атрибут lang:

Результат

Дизайнер сказал: простота - это сложно.

Атрибут переключается на самом абзаце, а не на реальном <html> страницы, - иначе демонстрация поменяла бы язык всей странице целиком. Кавычки меняются мгновенно и без перезагрузки, потому что CSS сам следит за атрибутом lang через :lang() - это не хитрость конкретно этого примера, а обычное поведение браузера, которым можно пользоваться в своей вёрстке.

Атрибуты

АтрибутДля чего
langЯзык страницы: ru, en и т.д. Нужен почти всегда - влияет на перенос слов, экранные дикторы и подсказки браузера
dirНаправление текста: ltr (слева направо, по умолчанию) или rtl - для страниц на арабском, иврите и т.п. Нужен редко

Частые ошибки

ОшибкаЧто происходитКак исправить
Забыли атрибут langПеренос длинных слов не работает, экранный диктор может читать русский текст с английским произношениемДобавить lang="ru" (или нужный код языка) в открывающий тег
На странице два тега <html>Браузер использует только первый, остальное - невалидная разметка с непредсказуемым поведениемВ документе должен быть ровно один <html>
Текст или теги стоят прямо внутри <html>, не в <head> и не в <body>Невалидная разметка - браузер молча пытается сам исправить структуру, не всегда так, как ожидалосьВсё содержимое должно быть либо в <head>, либо в <body>
Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×