\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-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":"Русскоязычная версия 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-make-html-button-link","name":"Как сделать кнопку ссылкой в HTML без JavaScript","position":3,"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-disable-browser-cache-live-reload-setup","name":"Как отключить кэш браузера и настроить live reload","position":4,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-disable-browser-cache-live-reload-setup","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-disable-browser-cache-live-reload-setup"},"inLanguage":"ru","dateCreated":"2026-01-09T09:36:43.383Z","datePublished":"2026-01-09T09:36:43.383Z","dateModified":"2026-01-09T09:36:43.383Z","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":"Как отключить кэш браузера и настроить live reload","description":"Настройте рабочий процесс вёрстки: отключите кэш браузера в DevTools, настройте заголовки Cache-Control, используйте Live Server, BrowserSync и Webpack HMR для мгновенного обновления CSS/HTML без перезапуска. Советы для локальной и удалённой разработки.","keywords":["кэш браузера","отключить кэш браузера","live server","browser sync","как очистить кэш браузера","автоматическое обновление страницы","cache-control","webpack dev server","кэш яндекс браузера"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-create-interactive-slider-smooth-transitions","name":"Как создать интерактивный слайдер с плавными эффектами перехода","position":5,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-create-interactive-slider-smooth-transitions","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-create-interactive-slider-smooth-transitions"},"inLanguage":"ru","dateCreated":"2026-04-24T18:19:36.520Z","datePublished":"2026-04-24T18:19:36.520Z","dateModified":"2026-04-24T18:19:36.520Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@mdn-team","name":"MDN Team contributors","givenName":"MDN Team","familyName":"contributors","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@mdn-team","jobTitle":"Technical Writers","description":"Команда технических писателей MDN, отвечающая за создание и поддержку документации веб-технологий. Команда состоит из профессиональных авторов, специализирующихся на документации веб-стандартов и API."},{"@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/@w3schools-tutorial-team","name":"@w3schools-tutorial-team","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@w3schools-tutorial-team"}],"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-анимациями и JavaScript-методами для различных эффектов переключения.","keywords":["слайдер","плавный переход","галерея","карусель","css анимации","javascript слайдер","эффекты перехода","профессиональный слайдер"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/optimize-javascript-tabs-event-delegation","name":"Оптимизация вкладок JS: делегирование и data-атрибуты","position":6,"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/import-yes-no-attribute-csv-magento-2","name":"Импорт атрибута Да/Нет из CSV в Magento 2.4.8","position":7,"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/ios-safari-keyboard-viewport-fix","name":"iOS: как заставить Safari менять viewport при фокусе","position":8,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/ios-safari-keyboard-viewport-fix","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/ios-safari-keyboard-viewport-fix"},"inLanguage":"ru","dateCreated":"2026-01-03T09:28:44.223Z","datePublished":"2026-01-03T09:28:44.223Z","dateModified":"2026-01-03T09:28:44.223Z","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":"iOS: как заставить Safari менять viewport при фокусе","description":"Почему iOS‑клавиатура в Safari на iPhone не ресайзит layout‑viewport и как это исправить: Visual Viewport API, вычисление --vh, padding‑bottom, scrollIntoView и fallback‑паттерны.","keywords":["ios клавиатура","safari iphone","visual viewport api","visualViewport","--vh","100vh","fixed панель","scrollIntoView","высота клавиатуры","padding-bottom"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/change-html-test-results-devtools-browser","name":"Как изменить HTML-тест через инструменты разработчика","position":9,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/change-html-test-results-devtools-browser","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/change-html-test-results-devtools-browser"},"inLanguage":"ru","dateCreated":"2026-01-02T13:17:46.859Z","datePublished":"2026-01-02T13:17:46.859Z","dateModified":"2026-01-02T13:17:46.859Z","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-тест через инструменты разработчика","description":"Подробная инструкция: как заменить картинку результата (крест/галочка), найти правильные ответы в HTML/JS-коде страницы с помощью инструментов разработчика браузера. Пошаговые примеры для Chrome, Yandex, Edge, ограничения серверной проверки.","keywords":["инструменты разработчика","как открыть инструмент разработчика","инструмент разработчика в браузере","инструменты разработчика chrome","как открыть инструменты разработчика","консоль инструментов разработчика","devtools","изменить html тест","найти ответы в коде","заменить картинку devtools"],"image":[],"articleBody":""}},{"@type":"ListItem","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-remove-autocomplete-highlighting-input-fields","name":"Как убрать выделение автозаполнения в input полях","position":10,"item":{"@type":"Article","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-remove-autocomplete-highlighting-input-fields","mainEntityOfPage":{"@type":"WebPage","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/c/web/q/how-to-remove-autocomplete-highlighting-input-fields"},"inLanguage":"ru","dateCreated":"2026-04-01T10:25:34.533Z","datePublished":"2026-04-01T10:25:34.533Z","dateModified":"2026-04-04T10:40:37.616Z","author":[{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@community","name":"Community","givenName":"Community","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@community","jobTitle":"Сообщество","description":"Фоновый процесс, который помогает поддерживать чистоту сайта. Выполняет такие задачи, как случайное поднятие старых безответных вопросов, владение вопросами и ответами сообщества, владение голосами против спама/злых постов, которые удаляются навсегда, и владение предложенными правками от анонимных пользователей"},{"@type":"Person","@id":"https://xn--b1afbosiaouc3h.xn--p1ai/@peter","name":"Peter","givenName":"Peter","url":"https://xn--b1afbosiaouc3h.xn--p1ai/@peter","jobTitle":"Старший разработчик","description":"Участник сообщества Stack Overflow, специализируется на .NET и C#"},{"@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/@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/@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":"Как убрать выделение автозаполнения в input полях","description":"Кроссбраузерное решение для удаления подсветки автозаполнения в полях input. CSS-псевдоклассы, атрибуты autocomplete и JavaScript методы.","keywords":["стилизация input","chrome автозаполнение","firefox автозаполнение","input автозаполнение","css псевдоклассы","autocomplete атрибут","javascript решения","кроссбраузерное решение","удаление подсветки","webkit-autofill","moz-autofill","ms-input-auto-fill"],"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: допустимые значения