\n```\n\n---\n\n## Различия между HTML4 и HTML5 {#differences-html4-html5}\n\nВ HTML4 спецификация накладывала более жёсткие правила на формат ID-токенов: значение должно было начинаться с латинской буквы и далее могло содержать буквы, цифры, дефисы, подчёркивания, двоеточия и точки — см. W3C HTML 4.01: https://www.w3.org/TR/html401/types.html#type-name. \nВ HTML5 это ограничение на первый символ снято: теперь правило — хотя бы один символ и отсутствие пробелов; остальные детали — гибче (см. WHATWG: https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute). Иными словами, многие последовательности, допустимые в HTML5, были бы недопустимы в «старом» HTML4.\n\nПоследствие для разработчика: современные браузеры принимают id, начинающиеся с цифр или других символов, но совместимость с внешними инструментами (старые парсеры, CSS) стоит учитывать.\n\n---\n\n## Синтаксис и допустимые символы (практически) {#syntax-characters}\n\nТехнически HTML5 допускает широкий набор символов (включая Unicode), кроме пробельных символов. Но есть практические ограничения из-за взаимодействия с CSS, URL-фрагментами и инструментами:\n\n- CSS: селектор по id — #id. Если id начинается с цифры или содержит символы, которые мешают синтаксису CSS (пробел, точка, двоеточие и т.п.), селектор нужно экранировать. Простой вариант — использовать селектор по атрибуту:\n - [id=\"123\"] { /* безопасно */ }\n - Или экранирование в CSS: #\\31 23 { /* для id=\"123\" */ } \n Подробнее про практику можно посмотреть на примерах в справочниках (например, https://htmlbook.ru/html/attr/id).\n\n- JavaScript: document.getElementById('идентификатор') работает для большинства значений id, включая начинающиеся с цифры; то есть JS строгости по началу символа не накладывает.\n\n- URL‑фрагменты: в адресной строке символы вне ASCII могут требовать кодирования, поэтому простые ASCII‑идентификаторы удобнее для создания читаемых ссылок.\n\nРекомендация: если нужен универсальный и простой в использовании id — используйте латинские буквы, цифры, дефис и подчёркивание (kebab-case или snake_case).\n\n---\n\n## Уникальность и область видимости id {#uniqueness-scope}\n\nUniqueness — ключевое требование. Спецификация говорит о необходимости уникальности в пределах «home subtree» элемента (обычно это весь документ). Дубликаты id формально недопустимы и ведут к неожиданностям:\n- document.getElementById может вернуть не тот элемент, на который вы надеетесь; поведение в присутствии дубликатов непредсказуемо.\n- Ссылки вида #id и ARIA‑атрибуты, которые ссылаются на id, могут работать неправильно.\n- Стили через селектор #id применятся ко всем элементам с таким id (браузеры не предотвращают применение стилей), что нарушит семантику.\n\nПоэтому: не дублируйте id; для многократных групп элементов используйте class.\n\n---\n\n## Практические рекомендации по использованию id {#practical}\n\n- Делайте id короткими и осмысленными: header, user-list, form-login. \n- Предпочитайте нижний регистр и kebab-case: main-header, user-item. Это уменьшает вероятность ошибок при обращении из CSS/JS. \n- Не используйте пробелы; вместо этого — дефис или подчёркивание. \n- Для данных используйте data-атрибуты: data-id, data-user — когда вы хотите привязать данные к элементу, но не делать его уникальным идентификатором для навигации. \n- Для форм связывайте label и input через for/id: . ARIA и assistive‑технологии часто зависят от корректных id. \n- Проверяйте на дубликаты в процессе сборки/рендеринга (lint, тесты, шаблонизатор).\n\nЕсли нужно быстро выбрать элемент по id и вы не хотите заморачиваться с экранированием CSS — используйте document.querySelector('[id=\"…\"]') или document.getElementById('…').\n\n---\n\n## Ошибки и как их исправить {#common-mistakes}\n\n- Ошибка: id с пробелом\n - Плохо:
\n - Исправление:
\n\n- Ошибка: дублирование id\n - Плохо:
\n - Исправление: использовать уникальные id или class: id=\"item-1\", class=\"item\"\n\n- Ошибка: использование специальных символов без учёта CSS\n - Плохо:
и CSS: #123 {…} (не сработает без экранирования)\n - Исправление: [id=\"123\"] {…} или #\\31 23 {…}\n\n- Ошибка: попытка хранить данные в id\n - Плохо: id=\"user42-role-admin\"\n - Исправление: используйте data-атрибут: data-user-id=\"42\" data-role=\"admin\"\n\n---\n\n## Частые вопросы (FAQ) {#faq}\n\nВ: Можно ли начинать id с цифры? \nО: В HTML5 — да, спецификация не запрещает; однако в CSS такие id придётся экранировать (#\\31 23) или использовать селектор по атрибуту. Для простоты лучше начинать с буквы.\n\nВ: Можно ли использовать Unicode (кириллица) в id? \nО: Технически допустимо в HTML5, но это осложняет фрагменты URL и совместимость с инструментами. Для переносимости предпочтительнее ASCII.\n\nВ: Являются ли id регистрозависимыми? \nО: В HTML4 спецификация рассматривала ID‑токены как регистрозависимые; в практике HTML5 лучше придерживаться одного стиля регистра (например, всё в нижнем регистре), чтобы избежать путаницы при обращении из кода.\n\nВ: Что лучше — id или class? \nО: id — для одиночного уникального элемента; class — для групп/повторяющихся блоков и стилизации. Не заменяйте class на id просто для удобства.\n\n---\n\n## Источники {#sources}\n\n1. [HTML 5.2 — The id attribute (W3C)](https://www.w3.org/TR/html52/dom.html#the-id-attribute) \n2. [HTML Standard — The id attribute (WHATWG)](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) \n3. [HTML Standard — Global attributes (WHATWG)](https://html.spec.whatwg.org/multipage/dom.html#global-attributes) \n4. [HTML 4.01 — Common attributes / ID tokens (W3C)](https://www.w3.org/TR/html401/types.html#type-name) \n5. [HTML id Attribute — W3Schools](https://www.w3schools.com/html/html_id.asp) \n6. [Атрибут id — HTMLbook (ru)](https://htmlbook.ru/html/attr/id)\n\n---\n\n## Заключение {#conclusion}\n\nКоротко: id в HTML должен быть уникальным, содержать хотя бы один символ и не иметь пробелов; HTML5 снял требование начинать с буквы, но для надёжности и простоты поддержки используйте понятные ASCII‑идентификаторы (буквы, цифры, дефис/подчёркивание). Правильное применение атрибута id делает ваши ссылки, стили и скрипты предсказуемыми и доступными."},{"@type":"QAPage","@context":"https://schema.org","mainEntity":{"name":"Каковы правила для допустимых значений атрибута id в HTML?","text":"Каковы правила для допустимых значений атрибута id в HTML?","@type":"Question","acceptedAnswer":{"text":"Значение атрибута id должно быть уникальным в пределах «home subtree» (обычно документа), содержать хотя бы один символ и не содержать пробельных символов. В HTML4 требовалось начинать id с латинской буквы; в HTML5 это ограничение снято — технически допустимы цифры и Unicode‑символы. Для совместимости и удобства рекомендуется использовать ASCII‑идентификаторы (латинские буквы, цифры, дефис, подчёркивание). Специальные символы и id, начинающиеся с цифры, усложняют селекторы CSS (требуется экранирование) и фрагменты URL — при необходимости используйте селектор по атрибуту [id='...'] или document.getElementById. Не дублируйте id; для повторяющихся элементов применяйте class, а для хранения данных — data-атрибуты.","@type":"Answer","upvoteCount":3,"dateCreated":"2025-10-26T13:52:56.041Z","datePublished":"2025-10-26T13:52:56.041Z","dateModified":"2026-01-16T07:53:59.272Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"url":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817/#message-557fe332-8c76-4fbd-ae63-b84ff649ae43"},"@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817","answerCount":1,"dateCreated":"2025-10-26T13:52:56.041Z","datePublished":"2025-10-26T13:52:56.041Z","dateModified":"2026-01-16T07:53:59.272Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}]},"mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817"},"inLanguage":"ru","dateCreated":"2025-10-26T13:52:56.041Z","datePublished":"2025-10-26T13:52:56.041Z","dateModified":"2026-01-16T07:53:59.272Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817"},{"@type":"CollectionPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817/#related-questions","name":"Правила для атрибута id в HTML: допустимые значения","description":"Правила атрибута id в HTML: уникальность, допустимые символы, отличия HTML4/HTML5, влияние на CSS, фрагменты URL и практические рекомендации с примерами.","url":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817","inLanguage":"ru","mainEntity":{"@type":"ItemList","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/html-id-attribute-rules-2817/#related-questions","itemListElement":[{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-html-button-link","name":"Как сделать кнопку ссылкой в HTML без JavaScript","position":1,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-html-button-link","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-html-button-link"},"inLanguage":"ru","dateCreated":"2025-10-24T07:10:15.577Z","datePublished":"2025-10-24T07:10:15.577Z","dateModified":"2026-01-04T19:11:56.734Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Как сделать кнопку ссылкой в HTML без JavaScript","description":"Создайте HTML кнопку, которая работает как ссылка: стилизуйте тег под кнопку для перенаправления на страницу. Сохраните доступность, SEO и чистый URL без параметров. Примеры кода, CSS и лучшие практики для кнопка с ссылкой в html.","keywords":["сделать кнопку ссылку","html кнопка ссылка","кнопка с ссылкой в html","как сделать кнопку с ссылкой в html","кнопка ссылка html код","html кнопка ссылка на страницу","ссылка как кнопка html","сделать кнопку ссылкой css"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-div-clickable-link-xhtml11","name":"Как сделать div блок кликабельной ссылкой в XHTML 1.1","position":2,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-div-clickable-link-xhtml11","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-div-clickable-link-xhtml11"},"inLanguage":"ru","dateCreated":"2026-02-24T10:27:15.569Z","datePublished":"2026-02-24T10:27:15.569Z","dateModified":"2026-02-24T10:27:15.569Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@vlad-merzhevich","name":"Влад Мержевич","givenName":"Влад","familyName":"Мержевич","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@vlad-merzhevich","jobTitle":"Автор справочника","description":"Автор и владелец сайта htmlbook.ru, занимается разработкой и поддержкой справочника по веб-технологиям с 2002 года."},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@htmlbook-ru","name":"htmlbook.ru","description":"Онлайн-справочник по HTML, CSS, JavaScript и смежным веб-технологиям с примерами и правилами использования тегов. Авторский проект Влада Мержевича с 2002 года.","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@htmlbook-ru","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/htmlbook-ru/icon.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@palmervan","name":"@palmervan","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@palmervan","jobTitle":"Разработчик","description":"Участник сообщества Stack Overflow на русском, отвечает на вопросы по HTML/CSS и верстке."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@alekseyb","name":"Aleksey B","givenName":"Aleksey","familyName":"B","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@alekseyb","jobTitle":"Разработчик","description":"Разработчик, активный участник русскоязычного сообщества Stack Overflow"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@ru-stackoverflow-com","name":"Stack Overflow на русском","description":"Русскоязычная версия платформы вопросов и ответов для разработчиков, предоставляющая возможность общаться на русском языке по техническим вопросам и проблемам программирования","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@ru-stackoverflow-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/ru-stackoverflow-com/logo.png","width":"72","height":"72"}},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@www-w3-org","name":"W3C","description":"Всемирное консорциум веб-технологий (World Wide Web Consortium), разрабатывающий стандарты и рекомендации по веб-технологиям на основе принципов доступности, интернационализации, приватности и безопасности.","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@www-w3-org","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/www-w3-org/icon.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@aleksey-kodov","name":"Алексей Кодов","givenName":"Алексей","familyName":"Кодов","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@aleksey-kodov","jobTitle":"Автор статей","description":"Автор вики-статей Skypro по лайфстайлу и финансам"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@sky-pro","name":"Skypro","description":"Образовательная платформа, предлагающая курсы и материалы по профессиональным навыкам, включая редактирование текстов","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@sky-pro","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/sky-pro/logo.png","width":"72","height":"72"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Как сделать div блок кликабельной ссылкой в XHTML 1.1","description":"Узнайте, почему нельзя использовать
в XHTML 1.1 для div ссылка. Валидные альтернативы: блочный с CSS, JS onclick. Примеры кода, правила W3C и лучшие практики для всего блока ссылка без изменений визуала.","keywords":["сделать блок ссылкой","div ссылка","блок ссылки","весь блок ссылка","html div ссылки","xhtml 1.1","css div ссылка","html блок ссылка"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/position-main-illustration-bottom-right","name":"Как разместить .main-illustration в правом нижнем углу","position":3,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/position-main-illustration-bottom-right","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/position-main-illustration-bottom-right"},"inLanguage":"ru","dateCreated":"2025-12-13T10:22:26.335Z","datePublished":"2025-12-13T10:22:26.335Z","dateModified":"2025-12-13T10:22:26.335Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Как разместить .main-illustration в правом нижнем углу","description":"Если элемент находится внутри .header с position: relative, bottom:0; right:0; уже ставит его в правый нижний угол. Проверьте вложенность, z-index и overflow.","keywords":["позиционирование элементов",".main-illustration","правый нижний угол","z-index","overflow hidden","CSS absolute positioning","header блок","положение изображения","CSS позиционирование","правый нижний угол header"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/control-image-size-css-page-margin-boxes-chrome-print","name":"Как контролировать размер изображений в CSS @page при печати в Chrome","position":4,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/control-image-size-css-page-margin-boxes-chrome-print","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/control-image-size-css-page-margin-boxes-chrome-print"},"inLanguage":"ru","dateCreated":"2026-02-27T17:13:36.950Z","datePublished":"2026-02-27T17:13:36.950Z","dateModified":"2026-02-27T17:13:36.950Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@paulh567","name":"@paulh567","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@paulh567","jobTitle":"Разработчик","description":"Активный участник Stack Overflow с репутацией 199. Специализируется на CSS, SVG, HTML, C#, Bootstrap, System.Text.Json. 7 ответов, 21 вопрос"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@stackoverflow-com","name":"Stack Overflow","description":"Крупнейшая платформа вопросов и ответов для разработчиков, где пользователи могут задавать вопросы, отвечать на них и обмениваться знаниями в различных областях программирования и технологий","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@stackoverflow-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/stackoverflow-com/logo.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@rachel-andrew","name":"Rachel Andrew","givenName":"Rachel","familyName":"Andrew","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@rachel-andrew","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/rachel-andrew/avatar.png","width":"72","height":"72"},"jobTitle":"Специалист по CSS и веб-стандартам","description":"Автор статей на web.dev и developer.chrome.com по CSS, layout и веб-технологиям. Технический писатель с экспертизой в веб-стандартах"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-chrome-com","name":"Chrome for Developers","description":"Официальный ресурс Google с документацией по разработке для Chrome, DevTools и веб-технологиям","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-chrome-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/developer-chrome-com/logo.png","width":"72","height":"72"}},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","name":"MDN Web Docs","description":"Официальная документация по веб-технологиям от Mozilla с подробными примерами и руководствами","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/developer-mozilla-org/logo.png","width":"72","height":"72"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Как контролировать размер изображений в CSS @page при печати в Chrome","description":"Решение проблемы с изображениями в margin boxes @page при css печать в Chrome: обрезка и переполнение. Используйте background-image с contain для масштабирования под бокс, сохранения пропорций, настройки отступов без изменения ширины. Примеры кода для print css.","keywords":["css печать","print css","печать chrome","media print css","css для печати","css печать страницы","margin boxes","background-size contain","box margin"],"image":["https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15455/preview/1x1.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15455/preview/4x3.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15455/preview/16x9.png"],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/import-yes-no-attribute-csv-magento-2","name":"Импорт атрибута Да/Нет из CSV в Magento 2.4.8","position":5,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/import-yes-no-attribute-csv-magento-2","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/import-yes-no-attribute-csv-magento-2"},"inLanguage":"ru","dateCreated":"2025-10-18T20:49:15.888Z","datePublished":"2025-10-18T20:49:15.888Z","dateModified":"2026-01-07T16:35:12.845Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Импорт атрибута Да/Нет из CSV в Magento 2.4.8","description":"Как правильно импортировать пользовательский атрибут типа 'Да/Нет' (upgrade_eligible) из CSV в Magento 2.4.8-p3. Используйте значения 1/0 без кавычек, UTF-8 без BOM, reindex после импорта. Пошаговая инструкция и решение ошибок.","keywords":["magento 2","csv импорт","атрибут да/нет","upgrade_eligible","boolean attribute","additional_attributes","импорт продуктов magento","magento 2.4.8"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/flexbox-block-sizes-40-percent-max-600px-legacy","name":"Flexbox: правый блок 40% (max 600px), левый — остаток","position":6,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/flexbox-block-sizes-40-percent-max-600px-legacy","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/flexbox-block-sizes-40-percent-max-600px-legacy"},"inLanguage":"ru","dateCreated":"2025-11-03T00:55:20.878Z","datePublished":"2025-11-03T00:55:20.878Z","dateModified":"2026-01-11T13:23:48.640Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Flexbox: правый блок 40% (max 600px), левый — остаток","description":"Как задать размеры блоков в flexbox: правый — 40% ширины контейнера, но не более 600px, левый занимает остаток. Примеры кода с flex: 0 0 40%, max-width, flex-basis, поддержка IE10/Windows 7 и старых браузеров.","keywords":["flexbox","flexbox css","flexbox ширина","flexbox блоки","свойства flexbox","flex-basis","flex-grow","max-width flexbox","flexbox ie10","flexbox примеры"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/why-css-shadows-display-differently","name":"Почему тени CSS отображаются иначе в проекте: решение резких теней","position":7,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/why-css-shadows-display-differently","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/why-css-shadows-display-differently"},"inLanguage":"ru","dateCreated":"2026-03-08T20:40:57.241Z","datePublished":"2026-03-08T20:40:57.241Z","dateModified":"2026-03-08T20:40:57.241Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@johndoe","name":"John Doe","givenName":"John","familyName":"Doe","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@johndoe","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/johndoe/avatar.png","width":"72","height":"72"},"jobTitle":"Full-Stack Developer","description":"Full-stack developer с 10-летним опытом в веб-технологиях"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@stackoverflow-com","name":"Stack Overflow","description":"Крупнейшая платформа вопросов и ответов для разработчиков, где пользователи могут задавать вопросы, отвечать на них и обмениваться знаниями в различных областях программирования и технологий","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@stackoverflow-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/stackoverflow-com/logo.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@sarahc","name":"Sarah Chen","givenName":"Sarah","familyName":"Chen","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@sarahc","jobTitle":"Технический писатель","description":"Технический писатель MDN с опытом в создании документации по CSS и веб-стандартам"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","name":"MDN Web Docs","description":"Официальная документация по веб-технологиям от Mozilla с подробными примерами и руководствами","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/developer-mozilla-org/logo.png","width":"72","height":"72"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Почему тени CSS отображаются иначе в проекте: решение резких теней","description":"Причины резкого отображения теней CSS и способы их исправления. Узнайте, как настроить box-shadow для плавно затухающих теней.","keywords":["тень css","box shadow css тени","сделать тень css","тень текста css","генератор теней css"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/optimize-javascript-tabs-event-delegation","name":"Оптимизация вкладок JS: делегирование и data-атрибуты","position":8,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/optimize-javascript-tabs-event-delegation","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/optimize-javascript-tabs-event-delegation"},"inLanguage":"ru","dateCreated":"2026-03-04T13:18:51.727Z","datePublished":"2026-03-04T13:18:51.727Z","dateModified":"2026-03-04T13:18:51.727Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@ramy-nasr","name":"Ramy Nasr","givenName":"Ramy","familyName":"Nasr","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@ramy-nasr","jobTitle":"Разработчик JavaScript","description":"Активный участник Stack Overflow с репутацией 2,567, специализируется на PHP, Symfony, Doctrine ORM, JavaScript и jQuery. Имеет вклад в 79 ответов и участие в нескольких сетях Stack Exchange."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@orenrocco","name":"@orenrocco","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@orenrocco","jobTitle":"Веб-разработчик","description":"Участник Stack Overflow с репутацией 21, активен в темах HTML, jQuery, JavaScript. Участвует также в Code Review и других сетях Stack Exchange."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@mulan","name":"@mulan","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@mulan","jobTitle":"Разработчик jQuery-плагинов","description":"Участник Stack Overflow, специализируется на разработке jQuery-плагинов и оптимизации интерфейсов."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@user863","name":"@user863","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@user863","jobTitle":"Разработчик интерфейсов","description":"Участник Stack Overflow, фокусируется на интерфейсах и jQuery-решениях для вкладок."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@gwer","name":"Владлен Грачев","givenName":"Владлен","familyName":"Грачев","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@gwer","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/gwer/avatar.png","width":"72","height":"72"},"jobTitle":"JavaScript-разработчик","description":"Опытный разработчик с вкладом в 291 ответ и 2 вопроса на Хабр Q&A. Активен в тегах JavaScript, PHP, CSS, HTML, программирование, Python."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@stalker-red","name":"@stalker-red","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@stalker-red","jobTitle":"Веб-разработчик","description":"Активный участник Хабр Q&A по веб-разработке и JavaScript."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@diithitech","name":"Dmitriy Mozgovoy","givenName":"Dmitriy","familyName":"Mozgovoy","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@diithitech","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/diithitech/avatar.png","width":"72","height":"72"},"jobTitle":"Fullstack JavaScript-разработчик","description":"Fullstack-разработчик на Хабр Q&A, специализируется на JS и архитектуре кода."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@sageptr","name":"@sageptr","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@sageptr","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/sageptr/avatar.png","width":"72","height":"72"},"jobTitle":"Разработчик","description":"Разработчик на Хабр Q&A, участвует в обсуждениях JS и DOM."},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@inkvizitor","name":"Инквизитор","givenName":"Инквизитор","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@inkvizitor","jobTitle":"Фронтенд-разработчик","description":"Профессиональный разработчик, отвечающий на вопросы на Stack Overflow"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@itchief","name":"Александр Мальцев","givenName":"Александр","familyName":"Мальцев","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@itchief","jobTitle":"Автор туториалов по JavaScript","description":"Автор сайта ИТ Шеф, создает туториалы по веб-разработке, фокус на JS, HTML/CSS для начинающих."}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Оптимизация вкладок JS: делегирование и data-атрибуты","description":"Как оптимизировать JavaScript-код для переключения вкладок (табов) без дублирования: делегирование событий, data-атрибуты, jQuery-плагины, CSS-only, LocalStorage. Масштабируемо для сотен tabs js с медиа-контентом.","keywords":["вкладки js","tabs js","переключение вкладок","tab вкладки","вкладка javascript","css переключение вкладок","js табы","делегирование событий","data-атрибуты"],"image":["https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15833/preview/1x1.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15833/preview/4x3.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15833/preview/16x9.png"],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/scale-image-css-page-margin-boxes-print-chrome","name":"Как масштабировать изображение в CSS @page @top-left при печати","position":9,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/scale-image-css-page-margin-boxes-print-chrome","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/scale-image-css-page-margin-boxes-print-chrome"},"inLanguage":"ru","dateCreated":"2026-02-27T18:03:45.878Z","datePublished":"2026-02-27T18:03:45.878Z","dateModified":"2026-02-27T18:03:45.878Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@paulh567","name":"@paulh567","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@paulh567","jobTitle":"Разработчик","description":"Активный участник Stack Overflow с репутацией 199. Специализируется на CSS, SVG, HTML, C#, Bootstrap, System.Text.Json. 7 ответов, 21 вопрос"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@rachel-andrew","name":"Rachel Andrew","givenName":"Rachel","familyName":"Andrew","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@rachel-andrew","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/rachel-andrew/avatar.png","width":"72","height":"72"},"jobTitle":"Специалист по CSS и веб-стандартам","description":"Автор статей на web.dev и developer.chrome.com по CSS, layout и веб-технологиям. Технический писатель с экспертизой в веб-стандартах"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@andreas-zettl","name":"Andreas Zettl","givenName":"Andreas","familyName":"Zettl","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@andreas-zettl","jobTitle":"Автор статей по Print CSS","description":"Создатель сайта PrintCSS.net с контентом по CSS Paged Media. Имеет личный сайт azettl.net. Контент теперь поддерживается WirbelWild"}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Как масштабировать изображение в CSS @page @top-left при печати","description":"Контроль размера изображения в CSS печать: используйте background-image с contain вместо content: url() для margin boxes (@top-left). Масштабирование под бокс с пропорциями и отступами в Chrome. Примеры кода, тесты в Puppeteer, решение проблем print css.","keywords":["css печать","print css","media print css","css печать страницы","margin boxes","background-image","@page","@top-left","object-fit print"],"image":["https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15463/preview/1x1.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15463/preview/4x3.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15463/preview/16x9.png"],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/fix-css-arrow-animation-overlay-transparent-block-scroll","name":"Анимация CSS: стрелка на прозрачном блоке при скролле","position":10,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/fix-css-arrow-animation-overlay-transparent-block-scroll","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/fix-css-arrow-animation-overlay-transparent-block-scroll"},"inLanguage":"ru","dateCreated":"2026-01-03T12:35:33.179Z","datePublished":"2026-01-03T12:35:33.179Z","dateModified":"2026-01-03T12:35:33.179Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}}],"publisher":{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/about","name":"НейроОтветы","url":"https://xn--b1afbosiaouc3h.xn--p1ai/about","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/logo.png","width":"512","height":"512"}},"headline":"Анимация CSS: стрелка на прозрачном блоке при скролле","description":"Решение проблемы наложения анимированной стрелки CSS на прозрачный текстовый блок при скролле. Как исправить z-index, stacking context, заполнить пустоты градиентом и избежать смешения цветов в анимациях CSS.","keywords":["анимации css","z-index css","анимация при скролле","стрелка css","прозрачный блок css","z index opacity","анимация скролла css","stacking context"],"image":[],"articleBody":""}}]}}]}

Каковы правила для допустимых значений атрибута id в HTML?

Значение атрибута id в HTML должно быть уникальным в пределах документа (или «home subtree») и состоять как минимум из одного символа без пробелов; HTML5 снял требование начинать идентификатор с буквы, тогда как в HTML4 оно было. Практически стоит использовать короткие, читаемые идентификаторы (буквы, цифры, дефис, подчёркивание) и избегать служебных символов — это предотвратит проблемы с CSS‑селекторами, фрагментами URL и JavaScript.


Содержание


Правила для атрибута id в HTML

Атрибут id — глобальный атрибут, он может применяться к любому элементу и служит для однозначной идентификации элемента в документе (ссылки через #, выбор в CSS, доступ из JavaScript). Спецификация ясно формулирует несколько базовых требований: значение id должно быть уникальным в пределах «home subtree» (обычно это весь документ), содержать хотя бы один символ и не содержать пробельных символов — см. спецификацию WHATWG по атрибуту id: https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute.
Также атрибут id входит в перечень глобальных атрибутов: https://html.spec.whatwg.org/multipage/dom.html#global-attributes.

Примеры валидных id:

  • header, main-content, user_123

Примеры невалидных/плохих id:

  • “main header” (с пробелом) — запрещено
  • “” (пустая строка) — запрещено

Пример использования:

html
<nav id="main-nav"></nav>
<a href="#main-nav">Перейти к меню</a>
<script>
 const nav = document.getElementById('main-nav');
</script>

Различия между HTML4 и HTML5

В HTML4 спецификация накладывала более жёсткие правила на формат ID-токенов: значение должно было начинаться с латинской буквы и далее могло содержать буквы, цифры, дефисы, подчёркивания, двоеточия и точки — см. W3C HTML 4.01: https://www.w3.org/TR/html401/types.html#type-name.
В HTML5 это ограничение на первый символ снято: теперь правило — хотя бы один символ и отсутствие пробелов; остальные детали — гибче (см. WHATWG: https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute). Иными словами, многие последовательности, допустимые в HTML5, были бы недопустимы в «старом» HTML4.

Последствие для разработчика: современные браузеры принимают id, начинающиеся с цифр или других символов, но совместимость с внешними инструментами (старые парсеры, CSS) стоит учитывать.


Синтаксис и допустимые символы (практически)

Технически HTML5 допускает широкий набор символов (включая Unicode), кроме пробельных символов. Но есть практические ограничения из-за взаимодействия с CSS, URL-фрагментами и инструментами:

  • CSS: селектор по id — #id. Если id начинается с цифры или содержит символы, которые мешают синтаксису CSS (пробел, точка, двоеточие и т.п.), селектор нужно экранировать. Простой вариант — использовать селектор по атрибуту:

  • [id=“123”]

  • Или экранирование в CSS: #\31 23 { /* для id=“123” */ }
    Подробнее про практику можно посмотреть на примерах в справочниках (например, https://htmlbook.ru/html/attr/id).

  • JavaScript: document.getElementById(‘идентификатор’) работает для большинства значений id, включая начинающиеся с цифры; то есть JS строгости по началу символа не накладывает.

  • URL‑фрагменты: в адресной строке символы вне ASCII могут требовать кодирования, поэтому простые ASCII‑идентификаторы удобнее для создания читаемых ссылок.

Рекомендация: если нужен универсальный и простой в использовании id — используйте латинские буквы, цифры, дефис и подчёркивание (kebab-case или snake_case).


Уникальность и область видимости id

Uniqueness — ключевое требование. Спецификация говорит о необходимости уникальности в пределах «home subtree» элемента (обычно это весь документ). Дубликаты id формально недопустимы и ведут к неожиданностям:

  • document.getElementById может вернуть не тот элемент, на который вы надеетесь; поведение в присутствии дубликатов непредсказуемо.
  • Ссылки вида #id и ARIA‑атрибуты, которые ссылаются на id, могут работать неправильно.
  • Стили через селектор #id применятся ко всем элементам с таким id (браузеры не предотвращают применение стилей), что нарушит семантику.

Поэтому: не дублируйте id; для многократных групп элементов используйте class.


Практические рекомендации по использованию id

  • Делайте id короткими и осмысленными: header, user-list, form-login.
  • Предпочитайте нижний регистр и kebab-case: main-header, user-item. Это уменьшает вероятность ошибок при обращении из CSS/JS.
  • Не используйте пробелы; вместо этого — дефис или подчёркивание.
  • Для данных используйте data-атрибуты: data-id, data-user — когда вы хотите привязать данные к элементу, но не делать его уникальным идентификатором для навигации.
  • Для форм связывайте label и input через for/id: <input id=“email” …>. ARIA и assistive‑технологии часто зависят от корректных id.
  • Проверяйте на дубликаты в процессе сборки/рендеринга (lint, тесты, шаблонизатор).

Если нужно быстро выбрать элемент по id и вы не хотите заморачиваться с экранированием CSS — используйте document.querySelector(‘[id=“…”]’) или document.getElementById(‘…’).


Ошибки и как их исправить

  • Ошибка: id с пробелом

  • Плохо:

  • Исправление:

  • Ошибка: дублирование id

  • Плохо:

  • Исправление: использовать уникальные id или class: id=“item-1”, class=“item”

  • Ошибка: использование специальных символов без учёта CSS

  • Плохо:

    и CSS: #123 {…} (не сработает без экранирования)

  • Исправление: [id=“123”] {…} или #\31 23

  • Ошибка: попытка хранить данные в id

  • Плохо: id=“user42-role-admin”

  • Исправление: используйте data-атрибут: data-user-id=“42” data-role=“admin”


Частые вопросы (FAQ)

В: Можно ли начинать id с цифры?
О: В HTML5 — да, спецификация не запрещает; однако в CSS такие id придётся экранировать (#\31 23) или использовать селектор по атрибуту. Для простоты лучше начинать с буквы.

В: Можно ли использовать Unicode (кириллица) в id?
О: Технически допустимо в HTML5, но это осложняет фрагменты URL и совместимость с инструментами. Для переносимости предпочтительнее ASCII.

В: Являются ли id регистрозависимыми?
О: В HTML4 спецификация рассматривала ID‑токены как регистрозависимые; в практике HTML5 лучше придерживаться одного стиля регистра (например, всё в нижнем регистре), чтобы избежать путаницы при обращении из кода.

В: Что лучше — id или class?
О: id — для одиночного уникального элемента; class — для групп/повторяющихся блоков и стилизации. Не заменяйте class на id просто для удобства.


Источники

  1. HTML 5.2 — The id attribute (W3C)
  2. HTML Standard — The id attribute (WHATWG)
  3. HTML Standard — Global attributes (WHATWG)
  4. HTML 4.01 — Common attributes / ID tokens (W3C)
  5. HTML id Attribute — W3Schools
  6. Атрибут id — HTMLbook (ru)

Заключение

Коротко: id в HTML должен быть уникальным, содержать хотя бы один символ и не иметь пробелов; HTML5 снял требование начинать с буквы, но для надёжности и простоты поддержки используйте понятные ASCII‑идентификаторы (буквы, цифры, дефис/подчёркивание). Правильное применение атрибута id делает ваши ссылки, стили и скрипты предсказуемыми и доступными.

Авторы
Проверено модерацией
НейроОтветы
Модерация
Правила для атрибута id в HTML: допустимые значения