From 4608540b0c3757f45f3105ed1d34f8cc2cd06900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=98=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Mon, 10 Aug 2026 18:19:24 +0300 Subject: [PATCH] docs: expand HTML core semantics answers --- src/pages/html/index.md | 580 +++++++++++++++++++++++++++++++++++----- 1 file changed, 518 insertions(+), 62 deletions(-) diff --git a/src/pages/html/index.md b/src/pages/html/index.md index 00c6cd1..e3874b3 100644 --- a/src/pages/html/index.md +++ b/src/pages/html/index.md @@ -18,20 +18,53 @@ order: 30 **Короткий ответ** HTML описывает структуру и смысл документа: заголовки, текст, навигацию, формы, ссылки и изображения. Браузер разбирает -разметку и строит DOM, который используют CSS, JavaScript, поисковые роботы и ассистивные технологии (assistive -technologies). +разметку и строит DOM, который используют CSS, JavaScript, поисковые роботы и assistive technologies. **Полный ответ** -HTML описывает структуру и смысл документа: заголовки, текст, навигацию, формы, ссылки и изображения. Браузер разбирает -разметку и строит DOM, который используют CSS, JavaScript, поисковые роботы и ассистивные технологии (assistive -technologies). +HTML, HyperText Markup Language, — язык разметки, который описывает **структуру и семантику** документа. Он не задает +бизнес-логику приложения и не отвечает за визуальный layout: обычно HTML описывает, _что это за контент_, CSS — как он +выглядит, а JavaScript — как меняется и реагирует на события. + +Например: ```html - +
+

Корзина

+

В корзине 3 товара

+ +
``` -![img.png](assets/html-and-css-difference.png) +Здесь браузер получает не просто набор строк. После parsing он создает DOM-узлы с типами и отношениями: `article` +содержит heading, paragraph и интерактивный `button`. На основе HTML и ARIA браузер также строит accessibility tree, +который используют screen readers. + +HTML важен сразу нескольким потребителям: + +- браузеру — для построения DOM и native behavior элементов; +- CSS — как дерево, к которому применяются selectors и layout rules; +- JavaScript — как API объектов DOM; +- assistive technologies — для ролей, имен и структуры интерфейса; +- поисковым системам — для понимания содержимого и связей; +- тестам и automation — для устойчивых semantic selectors. + +Поэтому визуально одинаковые варианты не всегда эквивалентны: + +```html +
Купить
+ +``` + +Оба можно стилизовать одинаково, но второй вариант уже имеет keyboard behavior, focusability, button semantics и +ожидаемое поведение формы. + +Еще один важный момент: **HTML source и DOM — не одно и то же**. Parser может исправить часть невалидной вложенности, +добавить служебные узлы, а JavaScript позже меняет DOM динамически. + +На интервью полезно связать HTML не только с тегами: **HTML — это контракт структуры и семантики страницы, из которого +браузер строит DOM и accessibility model; корректная разметка уменьшает объем CSS/JS, который приходится имитировать +вручную**. @@ -43,16 +76,67 @@ technologies). **Короткий ответ** -Attribute задает дополнительную информацию или поведение element: href, type, disabled, lang. Global attributes вроде -id, class, hidden и data- доступны большинству элементов, а часть attributes имеет смысл только для определенных tags. +Attribute задает дополнительную информацию, состояние или настройку HTML element: `href`, `type`, `disabled`, `lang`. +Global attributes вроде `id`, `class`, `hidden` и `data-*` доступны большинству элементов, а часть attributes имеет +смысл только для определенных элементов. **Полный ответ** -![img.png](assets/what-is-html-attribute.png) +HTML attribute — часть start tag, которая уточняет свойства элемента или его поведение. + +```html + + Profile + +``` + +Здесь: + +- `href` задает destination ссылки; +- `class` добавляет значение, которое можно использовать в CSS/JS; +- `lang` меняет языковой контекст текста. + +Attributes удобно разделять на несколько групп. + +**Global attributes** доступны у большинства HTML elements: `id`, `class`, `title`, `hidden`, `tabindex`, `lang`, `dir`, +`data-*` и другие. + +**Element-specific attributes** определены для конкретных элементов: `href` у `a`, `src` и `alt` у `img`, `type` у +`button`/`input`, `action` у `form`. + +**Boolean attributes** работают по факту присутствия, а не по строковому значению: + +```html + +``` + +Для boolean attribute запись `disabled="false"` все равно означает disabled, потому что attribute присутствует. Чтобы +снять состояние, attribute нужно удалить. -Attribute задает дополнительную информацию или поведение element: `href`, `type`, `disabled`, `lang`. Global attributes -вроде `id`, `class`, `hidden` и `data-*` доступны большинству элементов, а часть attributes имеет смысл только для -определенных tags. +Важно отличать **HTML attribute от DOM property**. Initial markup задает attributes, а browser создает DOM object с +properties. Для некоторых значений они отражают друг друга, но не всегда являются одной сущностью. Например, текущее +`input.value` может измениться после пользовательского ввода, тогда как attribute `value` продолжает описывать initial +value. + +```html + +``` + +```js +input.value = 'current'; +``` + +В framework-разработке эта разница особенно заметна при property binding и attribute binding. + +Attributes также не являются безопасным хранилищем. Любые значения в DOM видны клиенту, поэтому в `data-*`, hidden +inputs и произвольные attributes нельзя помещать secrets или считать их trusted source. + +На интервью хороший ответ включает три идеи: **attribute находится в markup, может влиять на semantics/native behavior, +а после parsing важно различать attribute и соответствующее DOM property**. @@ -64,17 +148,68 @@ Attribute задает дополнительную информацию или **Короткий ответ** -Semantic HTML использует элементы по их назначению: nav для навигации, main для основного контента, button для действия. -Это делает структуру понятнее браузеру, разработчикам, поисковым системам и assistive technologies. +Semantic HTML использует элементы по их назначению: `nav` для навигации, `main` для основного контента, `button` для +действия. Это делает структуру понятнее браузеру, разработчикам, поисковым системам и assistive technologies. **Полный ответ** -Semantic HTML использует элементы по их назначению: `nav` для навигации, `main` для основного контента, `button` для -действия. Это делает структуру понятнее браузеру, разработчикам, поисковым системам и assistive technologies. +Semantic HTML означает, что элемент выбирают прежде всего по **смыслу и поведению**, а не по его default-стилям. + +Например: + +```html + + +
+

Каталог

+ +
+``` + +`nav`, `main`, heading, link и button сообщают браузеру и assistive technologies, какую роль выполняет каждый кусок +интерфейса. Это дает несколько преимуществ. + +**Accessibility** + +Screen reader может быстро перемещаться по landmarks и headings, а native controls получают ожидаемый keyboard behavior +без ручной реализации. + +**Поддерживаемость** + +Разметка `