Атрибут hidden
Железобетонный способ скрыть элемент в тех случаях, когда не подходят opacity или visibility . В отличие от двух других способов этот применяется прямо в HTML-разметке. Не лучшая практика: влиять на внешний вид страницы через разметку, но иногда именно это и нужно. По сути, это display : none — именно так он описан в браузерных стилях.
Пример
Скопировать ссылку «Пример» Скопировано
Этот текст будет невиден на странице. Хотя элемент в разметке будет!p hidden> Этот текст будет невиден на странице. Хотя элемент в разметке будет! p>
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Поскольку атрибут hidden глобальный, его можно добавить к абсолютно любому тегу, чтобы скрыть его от глаз пользователя. Просто поставьте его после имени самого тега до закрывающей треугольной скобки. Собственно, как и все прочие атрибуты.
Этот атрибут булевый, у него может быть значение true — элемент спрятан, или false — элемент видим. Но обычно его пишут без значения, что приравнивается к true по умолчанию. Значения могут пригодиться, если вы будете менять их при помощи JavaScript.
Очень важно знать, что тег, спрятанный при помощи атрибута hidden становится невидим не только для пользователя, но и для скринридеров.
По причине того, что тег с этим атрибутом пропадает совсем как от пользователя, так и от скринридеров, стоит использовать этот приём аккуратно, понимая последствия.
Подсказки
Скопировать ссылку «Подсказки» Скопировано
Как и с display : none , такое скрытие нельзя анимировать ☹️
Атрибут пишется в одно слово, без значения, если вы хотите спрятать элемент.
Элемент скрывается от глаз не только пользователя, но и вообще как будто не существует. Его не видят скринридеры, на него нельзя установить ссылку.
Элемент с атрибутом hidden остаётся виден поисковым роботам и будет ими проиндексирован.
На собеседовании
Скопировать ссылку «На собеседовании» Скопировано
Какая разница между hidden , aria — hidden = «true» , role = «presentation» и role = «none» ?
Скопировать ссылку «Какая разница между hidden, aria-hidden=»true», role=»presentation» и role=»none»?» Скопировано
Скопировать ссылку «Матвей Романов отвечает» Скопировано
- hidden — это HTML-атрибут, который предназначен для скрытия элемента на странице. Это означает, что элемент не будет отображаться в пользовательском интерфейсе и скроется от вспомогательных технологий, но он все ещё существует в DOM.
- aria — hidden = «true» — это атрибут ARIA (Accessible Rich Internet Applications), который используется для указания, что элемент должен быть скрыт от вспомогательных технологий, таких как скринридеры. Это означает, что элемент не будет доступен для слушателей событий или считывания содержимого вспомогательными технологиями, но он все ещё виден в пользовательском интерфейсе.
- role = «presentation» — это ARIA-атрибут, который указывает, что элемент является частью представления или дизайна и не имеет никакой роли в вспомогательных технологиях. Это означает, что роль элемента будет игнорироваться такими технологиями.
- role = «none» — это синоним role = «presentation» , который тоже указывает, что элемент не имеет роли для вспомогательных технологий. Это означает, что роль элемента не будет доступна для слушателей событий или механизмов навигации вспомогательными технологиями.
Общий HTML атрибут hidden
Атрибут hidden это атрибут-переключатель.
Если он присутствует, то он определяет, что данный HTML элемент еще не является или уже не является значимым.
Браузеры не должны отображать элементы, у которых определен атрибут hidden.
Также, атрибут hidden может использоваться для сокрытия от пользователя какого-либо элемента до того, как будут выполнены некие условия (например, выбор чекбокса и т.п.). В этом случае скрипт JavaScript может убрать атрибут hidden, сделав тем самым данный элемент видимым.
Атрибут hidden был добавлен в HTML5.
В XHTML минимизация атрибутов запрещена, таким образом атрибут hidden в XHTML должен определяться, как element hidden=»hidden»>.
Синтаксис атрибута
Пример использования атрибута
Этот параграф должен быть скрыт.
Hidden html что это
Примечание: События input и change не применимы для скрытых полей ввода. Их нельзя взять в фокус даже с помощью JavaScript (например, используя hiddenInput.focus() ).
Значение
Для скрытых атрибут value хранит непосредственно скрытые данные, которые затем можно отправить на сервер вместе с формой.
Предупреждение: Несмотря на то, что поле ввода скрыто от пользователей, оно по-прежнему видимо и доступно для редактирования через консоль разработчика. Не храните конфиденциальную информацию в input с типом hidden , она не будет как-либо защищена.
Дополнительные атрибуты
В дополнение к атрибутам, общим для всех input , скрытые поля ввода позволяют иначе использовать следующий атрибут.
name
Скрытые input , чьи атрибуты name установлены в _charset_ , не должны иметь атрибут value . При отправке формы он автоматически будет содержать значение с кодировкой символов, используемых в отправленной форме.
Использование скрытых input
Как упоминалось ранее, скрытые input можно использовать для хранение данных, которые пользователи не смогут увидеть или изменить через свой интерфейс. Посмотрим на примеры такого применения.
Отслеживание отредактированного контента
Одним из наиболее распространенных способов применения скрытых полей ввода является отслеживание того, какая именно запись базы данных должна быть обновлена после отправки формы. Типичный процесс редактирования выглядит так:
- Пользователь решает отредактировать контент, например, запись в своём блоге или какое-то описание товара. Он начинает с нажатия на кнопку «Редактировать».
- Контент для редактирования запрашивается из базы данных и подгружается в HTML форму, чтобы пользователь мог внести изменения.
- После правок, пользователь отправляет форму, и обновлённые данные отправляются обратно на сервер для обновления базы данных.
Идея в том, чтобы на втором шаге сохранить ID редактируемой записи в скрытый input . Когда пользователь отправит форму на третьем шаге, скрытый ID отправится на сервер вместе с новыми данными. Это позволит серверу точно знать, какая именно запись должна быть изменена.
Вы можете посмотреть пример такой логики в секции Примеры ниже.
Улучшение безопасности веб-сайта
Скрытые input также используются для хранения и отправки токенов безопасности. Основная идея заключается в том, что если пользователь заполняет некую конфиденциальную форму, например, в своём банковском аккаунте для перевода денег на другой счёт, ему будет выдан токен безопасности. Этот токен докажет, что отправитель действительно тот, за кого себя выдаёт, и что он использует нужную форму для отправки своего перевода.
Такой приём затрудняет для злоумышленников создание поддельных банковских веб-сайтов, чтобы обманом вынудить жертву перевести деньги не туда. Подобный вид атак называется подделкой межсайтовых запросов (CSRF); практически любой крупный серверный фреймворк использует токены безопасности для предотвращения атак этого типа.
Примечание: Хранение токенов безопасности в скрытых input не означает их сохранность, дополнительно портребуется, например, шифрование. Смысл скрытого input заключается лишь в хранении токена безопасности, связанного с данными, и его автоматической отправке вместе с формой на сервер.
Валидация
Скрытые input не участвуют в валидации.
Примеры
Посмотрим, как мы могли бы реализовать простую версию формы со скрытым input для хранения идентификатора редактируемой записи:
form> div> label for="title">Заголовок поста:label> input type="text" id="title" name="title" value="Мой замечательный пост" /> div> div> label for="content">Контент:label> textarea id="content" name="content" cols="60" rows="5"> Некий контент внутри поста. textarea> div> div> button type="submit">Обновить постbutton> div> input type="hidden" id="postId" name="postId" value="34657" /> form>
Также добавим немного простого CSS:
html font-family: sans-serif; > form width: 500px; > div display: flex; margin-bottom: 10px; > label flex: 2; line-height: 2; text-align: right; padding-right: 20px; > input, textarea flex: 7; font-family: sans-serif; font-size: 1.1rem; padding: 5px; > textarea height: 60px; >
Сервер свяжет ID » postId » скрытого input с ID записи блога, чтобы знать, какую часть базы данных следует обновить. Никакого дополнительного клиентского кода для этого не потребуется.
Примечание: Вы также можете найти данный пример на GitHub (смотрите исходный код, а так же рабочее демо).
При отправке на сервер данные формы будут выглядеть примерно так:
Даже несмотря на то, что скрытый input не виден для пользователей при отправке формы, он содержит данные и они всё равно передаются на сервер.
Техническая сводка
Спецификации
| Specification |
|---|
| HTML Standard # hidden-state-(type=hidden) |
Совместимость браузеров
BCD tables only load in the browser
Смотрите также
- Руководство по HTML-формам
- и интерфейс HTMLInputElement (en-US)
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
- Product help
- Report an issue
Our communities
Developers
- Web Technologies
- Learn Web Development
- MDN Plus
- Hacks Blog
- Website Privacy Notice
- Cookies
- Legal
- Community Participation Guidelines
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
Различие между атрибутами HTML ‘hidden’ и ‘aria-hidden’

При работе с HTML, особенно при использовании таких фреймворков как Angular или React, часто встречаются атрибуты, начинающиеся с префикса ‘aria-‘. В частности, ‘aria-hidden’ и ‘hidden’. Чем же они отличаются и какой из них использовать в той или иной ситуации?
Итак, рассмотрим пример. Предположим, на веб-странице есть элемент, который должен быть скрыт от пользователя в определенных условиях. В HTML есть два способа сделать это с помощью атрибутов ‘hidden’ и ‘aria-hidden’.
Атрибут ‘hidden’ является стандартным атрибутом HTML5. Он предназначен для скрытия элементов на веб-странице. Если элемент помечен этим атрибутом, он будет невидим для всех пользователей. Из этого следует, что ‘hidden’ работает на уровне визуального отображения.
Этот элемент скрыт
В свою очередь, ‘aria-hidden’ является частью набора атрибутов Accessible Rich Internet Applications (ARIA). Эти атрибуты предназначены для улучшения доступности веб-страниц для людей с ограниченными возможностями. ‘Aria-hidden’ не скрывает элемент на физическом уровне, а указывает технологиям поддержки (например, считывателям экрана), что элемент должен быть недоступен для взаимодействия или проигнорирован.
Таким образом, ‘hidden’ и ‘aria-hidden’ служат различным целям. ‘Hidden’ используется для скрытия элементов на уровне визуального отображения для всех пользователей, в то время как ‘aria-hidden’ используется для управления видимостью элемента для технологий поддержки. Важно помнить, что ‘aria-hidden’ не влияет на визуальное отображение элемента.