\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-prevent-text-selection-html-css","name":"Полная блокировка выделения текста в HTML с помощью CSS","position":1,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-text-selection-html-css","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-text-selection-html-css"},"inLanguage":"ru","dateCreated":"2026-03-20T14:32:15.285Z","datePublished":"2026-03-20T14:32:15.285Z","dateModified":"2026-03-20T14:32:15.285Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","name":"MDN Web Docs","description":"MDN Web Docs — это открытый исходный проект, который документирует технологии веб-платформы, включая HTML, CSS, JavaScript и Web API. Также предоставляет обширные учебные ресурсы для начинающих разработчиков и студентов.","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"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@blowsie","name":"Blowsie","givenName":"Blowsie","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@blowsie","jobTitle":"Разработчик","description":"Опытный разработчик с большим опытом работы с веб-технологиями"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@tim-down","name":"Tim Down","givenName":"Tim","familyName":"Down","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@tim-down","jobTitle":"Разработчик","description":"Участник сообщества Stack Overflow, автор решений по JavaScript и веб-технологиям"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@zectbynmo","name":"ZECTBynmo","givenName":"ZECTBynmo","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@zectbynmo","jobTitle":"Разработчик","description":"Участник сообщества Stack Overflow, автор решений по улучшению пользовательского интерфейса"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@kaz","name":"Kaz","givenName":"Kaz","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@kaz","jobTitle":"Разработчик","description":"Участник сообщества Stack Overflow, автор практических решений по CSS"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@chriscoyier","name":"Chris Coyier","givenName":"Chris","familyName":"Coyier","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@chriscoyier","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/chriscoyier/avatar.png","width":"72","height":"72"},"jobTitle":"Технический писатель","description":"Основатель CSS-Tricks, эксперт в области веб-разработки"}],"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 с помощью CSS","description":"Комплексные методы предотвращения выделения и копирования HTML-блока с помощью CSS, включая user-select none и JavaScript решения для полной защиты.","keywords":["user select none","запретить копирование текста","pointer events none","webkit user select none","css запретить выделение текста","html запретить выделение","user-select","pointer-events","защита контента","кроссбраузерная совместимость","javascript защита от копирования","css user select"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-make-html-button-link","name":"Как сделать кнопку ссылкой в HTML без JavaScript","position":2,"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":3,"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":"Русскоязычная версия Stack Overflow - платформа вопросов и ответов для программистов","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/how-to-prevent-horizontal-scroll-mobile-menu","name":"Как запретить горизонтальный скроллинг в мобильном меню","position":4,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-horizontal-scroll-mobile-menu","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-horizontal-scroll-mobile-menu"},"inLanguage":"ru","dateCreated":"2026-01-24T07:39:07.620Z","datePublished":"2026-01-24T07:39:07.620Z","dateModified":"2026-01-24T07:39:07.620Z","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":"Как запретить горизонтальный скроллинг в мобильном меню","description":"Решения для запрета горизонтальной прокрутки при открытии мобильного меню. CSS overflow-x hidden, body fixed position и JavaScript методы.","keywords":["мобильное меню","горизонтальная прокрутка","overflow hidden","CSS overflow-x","body fixed","burger menu","мобильная версия","CSS решения"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/inner-rounded-corner-div-adaptive","name":"Создание внутреннего закругления в div с адаптивностью","position":5,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/inner-rounded-corner-div-adaptive","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/inner-rounded-corner-div-adaptive"},"inLanguage":"ru","dateCreated":"2026-02-12T09:09:59.541Z","datePublished":"2026-02-12T09:09:59.541Z","dateModified":"2026-02-12T09:09:59.541Z","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":"Создание внутреннего закругления в div с адаптивностью","description":"Альтернативные методы CSS для создания внутреннего закругления в правом нижнем углу div-а. Решения с mask, SVG clipPath и псевдоэлементами для адаптивного дизайна.","keywords":["border radius","внутреннее закругление","clip-path","css mask","radial-gradient","svg clippath","objectBoundingBox","адаптивность","кросс-браузерная совместимость","web-разработка","css свойства","закругление углов","div закругление"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-square-boxes-html-code-browser","name":"Как предотвратить квадратики вместо HTML-кода в браузере","position":6,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-square-boxes-html-code-browser","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-prevent-square-boxes-html-code-browser"},"inLanguage":"ru","dateCreated":"2026-03-28T11:39:35.620Z","datePublished":"2026-03-28T11:39:35.620Z","dateModified":"2026-03-28T11:39:35.620Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@w3-org","name":"W3C","description":"Основная международная организация по установлению стандартов для Всемирной паутины, разрабатывающая протоколы и руководства для обеспечения долгосрочного роста Всемирной паутины","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@w3-org"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","name":"MDN Web Docs","description":"MDN Web Docs — это открытый исходный проект, который документирует технологии веб-платформы, включая HTML, CSS, JavaScript и Web API. Также предоставляет обширные учебные ресурсы для начинающих разработчиков и студентов.","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":"Как предотвратить квадратики вместо HTML-кода в браузере","description":"Решаем проблему квадратиков вместо HTML-кода в браузерах. Узнайте о правильном экранировании символов и использовании тегов и
.","keywords":["html код","не отображается","код в браузере","html символы","квадратики в браузере","отображение html кода","экранирование символов в html"],"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":7,"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":"MDN Web Docs — это открытый исходный проект, который документирует технологии веб-платформы, включая HTML, CSS, JavaScript и Web API. Также предоставляет обширные учебные ресурсы для начинающих разработчиков и студентов.","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/flexbox-block-sizes-40-percent-max-600px-legacy","name":"Flexbox: правый блок 40% (max 600px), левый — остаток","position":8,"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/how-to-deploy-static-html-site-without-database","name":"Как развернуть статический HTML сайт без баз данных","position":9,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-deploy-static-html-site-without-database","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-deploy-static-html-site-without-database"},"inLanguage":"ru","dateCreated":"2026-03-27T09:30:26.307Z","datePublished":"2026-03-27T09:30:26.307Z","dateModified":"2026-03-27T09:30:26.307Z","author":[{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developer-mozilla-org","name":"MDN Web Docs","description":"MDN Web Docs — это открытый исходный проект, который документирует технологии веб-платформы, включая HTML, CSS, JavaScript и Web API. Также предоставляет обширные учебные ресурсы для начинающих разработчиков и студентов.","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"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@mdn-contributors","name":"MDN Contributors contributors","givenName":"MDN Contributors","familyName":"contributors","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@mdn-contributors","jobTitle":"Technical Writers","description":"Сообщество контрибьюторов MDN Web Docs, включающее разработчиков, технических писателей и энтузиастов веб-технологий, которые совместно создают и поддерживают документацию веб-стандартов."},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@github-com","name":"GitHub","description":"Мировая платформа для совместной разработки программного обеспечения с открытым исходным кодом","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@github-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/github-com/logo.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@github-pages-team","name":"@github-pages-team","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@github-pages-team","jobTitle":"Хостинг-сервис","description":"Хостинг-сервис"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@netlify-com","name":"Netlify","description":"Облачная платформа для создания и развертывания веб-приложений с поддержкой AI, автоматического развертывания из Git, serverless функций и интегрированного хранилища","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@netlify-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/netlify-com/icon.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@netlify-team","name":"@netlify-team","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@netlify-team","jobTitle":"Платформа развертывания","description":"Платформа развертывания"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@developers-google-com","name":"Google for Developers","description":"Официальная платформа документации и ресурсов для разработчиков Google, включая AdSense API и платформы. Предоставляет бесплатный и гибкий способ заработка на веб-сайтах, мобильных сайтах и результатах поиска с помощью релевантных и увлекательных объявлений.","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@developers-google-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/developers-google-com/logo.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@google-devs-team","name":"@google-devs-team","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@google-devs-team","jobTitle":"Портал документации","description":"Портал документации"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@vercel-com","name":"Vercel","description":"Платформа для создания и развертывания веб-приложений на инфраструктуре AI Cloud с поддержкой популярных фреймворков, глобальным CDN и автоматическим HTTPS","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@vercel-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/vercel-com/icon.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@vercel-team","name":"@vercel-team","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@vercel-team","jobTitle":"Платформа развертывания","description":"Платформа развертывания"}],"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 сайт без баз данных","description":"Пошаговое руководство по развертыванию статического HTML сайта без баз данных. Создание index.html, настройка robots.txt и выбор хостинга (GitHub Pages, Netlify, Vercel).","keywords":["статический сайт","vercel","github pages","netlify","хостинг для html сайта","статический html сайт","развернуть сайт html","настройка статического сайта","структура файлов seo"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/css3-text-border-techniques","name":"Обводка текста в CSS3: современные методы и хаки","position":10,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/css3-text-border-techniques","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/css3-text-border-techniques"},"inLanguage":"ru","dateCreated":"2026-02-26T11:31:10.146Z","datePublished":"2026-02-26T11:31:10.146Z","dateModified":"2026-02-26T11:31:10.146Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@chriscoyier","name":"Chris Coyier","givenName":"Chris","familyName":"Coyier","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@chriscoyier","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/chriscoyier/avatar.png","width":"72","height":"72"},"jobTitle":"Технический писатель","description":"Основатель CSS-Tricks, эксперт в области веб-разработки"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@css-tricks-com","name":"CSS-Tricks","description":"Ресурс для веб-разработчиков с практическими примерами и советами по CSS","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@css-tricks-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/css-tricks-com/icon.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@olawanle_joel","name":"Joel Olawanle","givenName":"Joel","familyName":"Olawanle","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@olawanle_joel","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/olawanle_joel/avatar.png","width":"72","height":"72"},"jobTitle":"Frontend-разработчик, технический редактор","description":"Frontend-разработчик, работающий в Kinsta в качестве технического редактора. Увлеченный преподаватель, любящий open source, написавший более 300 технических статей в основном о JavaScript и его фреймворках"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@kinsta-com","name":"Kinsta®","description":"Предоставляет быстрый, безопасный, масштабируемый хостинг WordPress с премиальной поддержкой","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@kinsta-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/kinsta-com/logo.png","width":"72","height":"72"}},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@narcélio-filho","name":"Narcélio Filho","givenName":"Narcélio","familyName":"Filho","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@narcélio-filho","jobTitle":"Веб-разработчик","description":"Участник сообщества Stack Overflow с высокой репутацией (13,003 баллов), активно отвечающий на вопросы по CSS и другим веб-технологиям"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@david-thomas","name":"David Thomas","givenName":"David","familyName":"Thomas","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@david-thomas","jobTitle":"Веб-разработчик","description":"Участник сообщества Stack Overflow, пишет коды для развлечения и иногда зарабатывает на этом"},{"@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/@rob-oleary","name":"Rob O'Leary","givenName":"Rob","familyName":"O'Leary","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@rob-oleary","image":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/person/rob-oleary/avatar.png","width":"72","height":"72"},"jobTitle":"Решение архитектора, fullstack разработчик, технический писатель","description":"Решение архитектора, fullstack разработчик, технический писатель и педагог. Активный участник некоммерческих организаций, поддерживающих уязвимых, путешественник"},{"@type":"Organization","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@blog-logrocket-com","name":"LogRocket Blog","description":"Блог, посвященный веб-разработке, предлагающий глубокие технические статьи, руководства и примеры кода для современных веб-технологий","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@blog-logrocket-com","logo":{"@type":"ImageObject","url":"https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/source/blog-logrocket-com/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":"Обводка текста в CSS3: современные методы и хаки","description":"Пошаговое руководство по созданию границ текста с помощью CSS3. Рассматриваем -webkit-text-stroke, text-shadow и другие современные методы для эффектов обводки шрифта.","keywords":["обводка текста css","text shadow css","белые рамки для текста","css границы текста","text stroke css","рамка для текста черно белая","как сделать обводку текста в css","рамка для текста белый фон","text shadow css generator","text shadow css примеры"],"image":["https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15327/preview/1x1.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15327/preview/4x3.png","https://xn--b1afbosiaouc3h.xn--p1ai/api/v1/question/15327/preview/16x9.png"],"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: допустимые значения