display
Как поставить несколько элементов <div> в строку? Объясняем, как менять стандартный тип отображения на произвольный. Подробно говорим об основных типах отображения.
Время чтения: меньше 5 мин
- Кратко
- Пример
- Как понять
- Как пишется
- Подсказки
- На практике
- Алёна Батицкая советует
- В чём разница между inline и inline-block?
Обновлено 10 октября 2022
Кратко
Скопировать ссылку на секцию «Кратко» Скопировано
По умолчанию почти все элементы в HTML имеют блочный и строчный тип отображения. Но в вёрстке часто бывает, что нам нужно сделать элемент не строчным, а блочным. И наоборот.
Тут на помощь приходит свойство display ✨
Помимо значений block (блочное отображение) и inline (строчное отображение) существует смешанное значение inline — block (строчно-блочное отображение).
Бывают и другие специфичные значения, например, flex , grid , table — cell .
Пример
Скопировать ссылку на секцию «Пример» Скопировано
Частая ситуация: на странице нужно показать иконки соцсетей со ссылками на аккаунты.
Обратите внимание, что внутри ссылок ничего не написано. Нам не нужно выводить название соцсети, а нужно вывести иконку с логотипом. Что мы и сделаем при помощи фона.
Выстраиваем пункты списка в ряд, а не друг под другом:
Превращаем ссылки из строчных в блочные элементы. После этого можем задать высоту и ширину:
Задаём иконки фоном для каждой отдельной ссылки:
По умолчанию ссылки — строчные. Это значит, что им нельзя задать размеры ( width и height ) и фоновую картинку.
Пишем display : block , и строка превращается в условный прямоугольник, у которого могут быть и размеры, и фон.
После этого смело меняем размер на нужный нам и фоном выводим иконки каждой из соцсетей.
Помимо этого по ходу решения задачи мы установили свойство display : inline — block для пунктов списка с классом social _ _ item . За счёт этого элементы, которые по умолчанию блочные, приобретают внешние признаки строчных элементов. Вместо того чтобы выстраиваться друг под другом, пункты списка теперь стоят рядом, в строку.
Как понять
Скопировать ссылку на секцию «Как понять» Скопировано
Каждый HTML-элемент по умолчанию имеет свой тип отображения. Например, ссылки нужны для оборачивания слов и фраз. Значит, они должны быть строчными, чтобы не разорвать окружающий текст.
Но по разным причинам может понадобиться изменить стандартное отображение на то, которое больше подходит под решение текущей задачи.
Как пишется
Скопировать ссылку на секцию «Как пишется» Скопировано
Пишем имя свойства display и после двоеточия через пробел указываем одно из доступных значений при помощи ключевого слова.
Значения свойства, которые встречаются в работе чаще всего:
- none — полностью скрывает элемент со страницы, не удаляя его при этом из HTML-разметки.
- block — элемент ведёт себя как блочный.
- inline — block — элемент ведёт себя снаружи как строчный, а внутри как блочный.
- flex — элемент становится флекс-контейнером, ведёт себя как блочный, а вложенные элементы становятся флекс-элементами. Подробнее в Гайде по flexbox.
- grid — элемент становится грид-контейнером. Снаружи грид-контейнер ведёт себя как блок. Дочерние элементы такого контейнера начинают подчиняться правилам грид-раскладки. Подробнее в Гайде по grid.
Остальные значения можно посмотреть в спецификации.
Это свойство можно применить к любому HTML-элементу.
Подсказки
Скопировать ссылку на секцию «Подсказки» Скопировано
Свойство display нельзя анимировать
Значение по умолчанию у каждого HTML-элемента своё. Если нет уверенности — загляните в «Инструменты разработчика» в браузере.
На практике
Скопировать ссылку на секцию «На практике» Скопировано
Алёна Батицкая советует
Скопировать ссылку на секцию «Алёна Батицкая советует» Скопировано
Если задаёте display : inline — block , чтобы выстроить несколько блоков в строку, обязательно указывайте для родительского элемента font — size : 0 . Иначе между строчно-блочными элементами будут небольшие отступы, как между словами — пробелы.
Многие начинающие разработчики сталкиваются с проблемой при выводе иконок соцсетей фоном для ссылок. Ссылки изначально строчные. Для изменения размера ссылки и для возможности задать ей фон ссылку нужно сделать блочной ( display : block ) или строчно-блочной ( display : inline — block ).
Если нужно вывести на страницу данные в виде таблицы, то в HTML-разметке создайте таблицу при помощи соответствующих тегов. Не используйте display : table для визуального преобразования в таблицу тех элементов, которые не имеют никакого отношения к таблице. Помните про семантику! ☝️
Семантикой в вёрстке называют подбор тегов по смыслу элемента. Прошли эпохи вёрстки на таблицах и дивах. Теперь почти для всего есть отдельный тег. Например, для меню есть тег <nav> , а для основного контента страницы — <main> .
Если нужно плавно показывать элемент или наоборот, прятать его, стоит присмотреться к решениям с использованием visibility и opacity . Или менять стили элемента при помощи JavaScript. Например, можно показывать другой текст по наведению на элемент:
Очень много задач сегодня решает display : flex . С его появлением перестали так часто использоваться значение inline — block или свойство float . Например, частая задача вертикального выравнивания раньше решалась при помощи магических пассов — большого количества кода, — а теперь легко решается одним свойством align — items . Или прижать два блока к разным сторонам родителя раньше можно было при помощи float и заклинания для решения проблемы выпадания. Теперь достаточно написать justify — content : space — between , и два блока будут прижаты к краям родителя
На собеседовании
Скопировать ссылку на секцию «На собеседовании» Скопировано
Это партнёрская рубрика, мы выпускаем её совместно с сервисом онлайн-образования Яндекс Практикум. Приносите вопрос, на который не знаете ответа, в задачи, мы разложим всё по полочкам и опубликуем. Если знаете ответ, присылайте пулреквест на GitHub.
В чём разница между inline и inline — block ?
Скопировать ссылку на секцию «В чём разница между inline и inline-block?» Скопировано
Это вопрос без ответа. Вы можете помочь! Почитайте о том, как контрибьютить в Доку.
The CSS Display Property – Display None, Display Table, Inline Block and More
Kolade Chris

In CSS, the display property determines how an element looks. It is also a crucial part of the presentation of you HTML code as it has a significant impact on layouts.
In fact, to use the modern Flexbox and Grid models, you need to use the display property before you get access to their various properties and values. This is one reason why the display property is so important in CSS.
Let’s dive in and learn how to use the display property and all its different values.
Basic display Property Syntax
Display Property Values in CSS
There are inline and block-level elements in CSS. The difference between the two is that inline elements don’t take up an entire space – that is, they don’t start on a new line – but block elements do.
The display property takes many different values such as inline , inline-block , block , table , and more, which all influence the layout and presentation of an element on the web page. Also, to implement the flex and grid layouts, you need to use the display property.
You can use this display property to change an inline element to block , block element to inline , block and inline elements to inline-block , and many more.

display: inline
An element with a display property set to inline will not start on a new line and it will take up the remaining/available screen width. It just takes up the space such an element would normally take.
Because of this, you can’t set the width and height of an element that has a display of inline , becuase it does not take up the whole screen width.
Some elements are inline by default, like <span> , <a> , <i> , and <img> .

display: block
An element that has the display property set to block starts on a new line and takes up the available screen width.
You can specify the width and height properties for such elements. Examples of elements that are at block-level by default are <div> , <section> , <p> , and lots more.
You can set the span from the previous HTML code to block display and it will behave like a block-level element.

You can see that the <span> takes up the full width. That’s because it has a display property set to block.
display: inline-block
Apart from block and inline display, there’s also inline-block.
An element you assign a display of inline-block is inline by presentation. But it has the added advantage of you being able to apply width and height to it, which you can’t do when the element is assigned a dispaly of inline .
So, you can look at the inline-block display as an inline element and block element in one package.

display: none
When you set the display property of an element to none , the element is completely taken off the page and it doesn’t have an effect on the layout.
This also means that devices like screen readers, which make websites accessible to blind people, wont’t have access to the element.
Do not confuse display: none with visibility: hidden . The latter also hides the element, but leaves the space it would normally take open or empty.

Visibility hidden leaves the space occupied by the span element open, as you can see below:

display: table
You’ll rarely use a display value of table these days, but it’s still important to know. It was more useful in the past because you would use it for layouts before the advent of floats, Flex, and Grid.
Setting display to table makes the element behave like a table. So you can make a replica of an HTML table without using the table element and corresponding elements such as tr and td .
For example, in HTML, you can make a table with the <table> element and also a <div> , or any container of your choice.
You make a table with the HTML <table> element like this:
The result of the HTML and CSS code snippets above looks like this:

But you can make the same table with the <div> element by setting the respective displays to table , table-row , and table-cell . You will get the same result as you can see below:
You still get your table:

Other values of the Display Property
Apart from inline , block , none , and table , which are really important because they significantly influence how web pages look, there are other values of the display property worthy of your attention.
Some of them you’ll use all the time without really realizing that they are also part of the display property. And others you won’t use often at all.
Let’s look at some of them now.
display: flex
A display of flex gives you access to the Flex layout system, which simplifies how we design and layout our web pages.

display: grid
A display set to grid allows you to build layouts with the grid system, which is like an advanced form of flex.

display: inherit
This makes the element inherit the display property of its parent. So, if you have a <span> tag inside a div and you give the span tag a display of inherit , it turns it from inline to block element.

display: initial
This sets the display property of an element to its default value. So, if you set the display property of a span to initial, it remains inline, and if you set the same value for a div, it remains block.

Conclusion
Having a good grasp of the display property will help your page layouts look great. It also gives you a lot more control over the way you present your elements while working with CSS.
You can continue to come back to this article for reference too as the display property is always confusing at first until you use it enough to understand it fully.
I hope this article has given you the background knowledge you need in order to put the display property to good use.
Методы скрытия элементов веб-страниц

Веб-разработчикам приходится скрывать элементы веб-страниц по самым разным причинам. Например, есть кнопка, которая должна быть видимой при просмотре сайта на мобильном устройстве, и скрытой — при использовании настольного браузера. Или, например, имеется некий навигационный элемент, который должен быть скрыт в мобильном браузере и отображён в настольном. Элементы, невидимые на странице, могут пребывать в различных состояниях:
- Некий элемент совершенно невидим и, более того, удалён из потока документа.
- Глазами элемент не увидеть, но он присутствует в документе и доступен для ассистивных технологий наподобие средств для чтения с экрана.
- Элемент видим, но скрыт от средств для чтения с экрана.
HTML5-атрибут hidden
Hidden — это логический HTML-атрибут, скрывающий элементы, которым он назначен. Когда браузер загружает страницу, он не выведет элементы с атрибутом hidden , за исключением тех случаев, когда видимость элементов будет включена вручную средствами CSS. Действие этого атрибута похоже на применение к элементу CSS-правила display: none .
Рассмотрим следующий пример:
Тут имеется разметка, задающая заголовок, изображение и описание. Изображение должно выводиться только в том случае, если ширина области просмотра превышает 400px . К элементу <img> я добавил атрибут hidden .
В CSS я воспользовался атрибутом hidden для вывода элемента только в том случае, если область просмотра страницы имеет необходимый размер.

Фрагмент веб-страницы
Вот CSS-код, который здесь использован:
→ Вот пример этой страницы на CodePen
Тут у вас может появиться вопрос о том, почему бы просто не использовать display: none . Хороший вопрос. Когда селектор изображения вызывается через его атрибут hidden , мы можем быть уверены в том, что даже если CSS-код по какой-то причине не загрузился, элемент будет скрыт.
▍Атрибут hidden и доступность контента
Если рассмотреть атрибут hidden с точки зрения доступности контента, то окажется, что этот атрибут полностью скрывает элемент. В результате с этим элементом не смогут работать средства для чтения с экрана. Не используйте этот атрибут в тех случаях, когда некие элементы страниц нужно делать невидимыми для человека, но не для программ для чтения с экрана.
CSS-свойство display
Каждый элемент веб-страницы обладает неким значением свойства display , назначаемым ему по умолчанию. Это может быть inline-block , block , table и так далее. Для того чтобы скрыть элемент с помощью свойства display , мы можем воспользоваться конструкцией display: none . Если элемент скрыт с помощью этой конструкции, то вместе с ним будут скрыты и все его потомки.
Представим, что мы хотим скрыть изображение из предыдущего примера и решили воспользоваться следующим CSS-кодом:
При таком подходе изображение будет полностью исключено из документа (из так называемого document flow — «потока документа»), оно будет недоступно программам для чтения с экрана. Возможно, вы не очень хорошо представляете себе понятие «поток документа». Для того чтобы с этим понятием разобраться — взгляните на следующий рисунок.

Синюю книгу убрали из стопки
«Поток документа» сравнивается здесь со стопкой книг. Если к синей книге будет применено свойство display: none , это будет означать, что её просто убрали из стопки. При этом пространство, которое раньше занимала эта книга, будет занято другими книгами. То же самое происходит и при скрытии HTML-элементов. Место, которое занимал бы скрытый элемент, занимают другие элементы, это влияет на расположение элементов в документе. В нашем примере это повлияло на положение книг в стопке.
Вот анимированный вариант примера с книгами, показывающий то, что происходит в том случае, если одну из них убирают из стопки.
Если убрать книгу из стопки — положение других книг в ней изменится
▍Производится ли загрузка ресурсов, скрытых средствами CSS?
Если коротко ответить на этот вопрос — то да, загрузка таких ресурсов производится. Например, если элемент <img> скрыт средствами CSS, и мы показываем этот элемент в некий момент работы со страницей, к этому моменту изображение уже будет загружено. Наличие на странице изображения, даже скрытого средствами CSS, приведёт к выполнению HTTP-запроса на его загрузку.
Здесь можно найти демонстрацию работы с изображением, скрытым средствами CSS. Если исследовать этот пример, открыв инструменты разработчика Chrome и посмотрев на вкладку Network , там можно увидеть соответствующий запрос.
Исследование страницы, содержащей скрытое изображение
▍Элемент style
Тут стоит упомянуть о том, что существуют HTML-элементы, свойство display которых по умолчанию установлено в значение none . Например, это элемент <style> , который может быть добавлен в тело HTML-страницы. Его свойство display можно изменить на block и сделать его видимым.
Вот HTML-код тела страницы:Вот CSS, с помощью которого мы делаем элемент style видимым:
Подобный приём может быть полезен в том случае, если нужно, чтобы блок style был бы видимым и, кроме того, редактируемым. Для того чтобы сделать такой блок редактируемым, можно добавить к тегу style атрибут contenteditable=true .
Вот как это выглядит.
Видимый редактируемый блок style
→ Вот демо-версия этого примера
▍CSS-свойство display и доступность контента
При использовании свойства display: none элемент становится невидимым и, кроме того, недоступным для средств чтения с экрана.
CSS-свойство opacity
Установив CSS-свойство opacity в значение 0 , можно скрыть элемент и все вложенные в него элементы. Это свойство не наследуется. Однако это свойство скрывает элементы лишь от того, кто смотрит на страницу, а не от программ для чтения с экрана. Тут стоит сказать и о том, что элемент, значение opacity которого отличается от 1 , создаёт новый контекст наложения.

Синяя книга невидима, но место, которое она занимает, всё ещё зарезервировано
На предыдущем рисунке показано, что синяя книга становится невидимой для наблюдателя. Но место, которое она занимала, зарезервировано. Порядок расположения других книг в стопке не изменился. Сравните это с тем, к чему приводило использование display: none .
В CSS-коде использование свойства opacity выглядит так:
Если вернуться к нашему первому примеру и предположить, что мы хотим скрыть изображение с использованием свойства opacity , то результат будет таким, как показано ниже.

Изображение скрыто с использованием CSS-свойства opacity
Как видно, изображение всё ещё присутствует на странице, но его место ничем не занято. Оно скрыто лишь от наблюдателя, но никуда не девается со страницы. Мне, после публикации материала, подсказали, что свойство pointer-events: none | auto можно использовать для отключения событий мыши на элементах, скрытых с помощью свойства opacity: 0 . Это — важная идея, так как пользователя может запутать взаимодействие со скрытым элементом (щелчки по нему, наведение на него указателя мыши, выделение текста).
→ Вот демонстрация использования свойства opacity
▍CSS-свойство opacity и доступность контента
Элемент, скрытый с помощью opacity: 0 , остаётся доступным для средств чтения с экрана. Такой элемент может получить фокус при работе со страницей с помощью клавиатуры.
CSS-свойство visibility
Используя свойство visibility: hidden можно показывать или скрывать элементы, делая это так же, как мы делали с помощью opacity: 0 . Это не влияет на поток документа.

При использовании visibility: hidden книга исчезает, но её место остаётся незанятым
Обратите внимание на то, что синяя книга исчезла, но это не повлияло на расположение других книг в стопке.
Надо отметить, что когда visibility: hidden используется для родительского элемента, скрытыми оказываются и все его потомки, но если одному из потомков назначено свойство visibility: visible , то этот потомок будет видимым.

Стопка книг скрыта, но синяя книга сделана видимой
Вернёмся к нашему обычному примеру с заголовком, изображением и описанием. Перепишем его HTML-код так:
Стилизуем его с помощью следующего CSS-кода:
После этого посмотрим на то, чем страница, к которой подобная стилизация не применялась, будет отличаться от стилизованной страницы.
Вложенный элемент оказывается видимым
Здесь элементу <article> назначено CSS-свойство visibility: hidden . А если добавить свойство visibility: visible к элементу <img> — изображение окажется видимым. Опять же, дело тут в том, что рассматриваемое свойство применяется к потомкам элемента, но оно может быть переопределено в элементе-потомке.
→ Вот демонстрация работы со свойством visibility
▍CSS свойство visibility и доступность контента
При применении свойства visibility: hidden элемент оказывается скрытым. Он, кроме того, удаляется из дерева доступности и, в результате, его не замечают средства для чтения с экрана.
Скрытие элементов и позиционирование
Для того чтобы скрыть элемент, воздействовав на его позицию на странице, нужно вывести его за пределы видимой области страницы и установить его размеры (ширину и высоту) в 0 . В качестве примера использования подобной методики скрытия элементов можно привести ссылку, позволяющую быстро перейти к главному содержимому страницы. Рассмотрим следующее изображение.

Ссылка, скрытая за пределами области видимости страницы
Для того чтобы расположить элемент за пределами области видимости страницы, можно воспользоваться следующим CSS-кодом:
Значение top: -100% уведёт элемент из области просмотра на 100% её высоты. В результате элемент окажется совершенно невидимым. А вот если он получит фокус после того, как пользователь доберётся до него, используя клавиши на клавиатуре, этот элемент можно показать:
→ Вот демонстрация этой методики скрытия элементов
▍CSS-свойство position и доступность контента
Элемент, выведенный за пределы области просмотра, доступен для средств чтения с экрана, добраться до него можно и с помощью клавиатуры. Он лишь оказывается невидимым при обычной работе со страницей.
CSS-свойство clip-path
Если к элементу применяется CSS-свойство clip-path — оно позволяет описать область, определяющую то, какая часть элемента должна быть скрытой, а какая — видимой.

Область обрезки изображения
В предыдущем примере к тому, что в левой части рисунка затемнено, применено свойство clip-path . При применении этого свойства затемнённые фрагменты изображения исчезнут.
Для того чтобы посмотреть на это свойство в действии, воспользуемся инструментом clippy. Работа начинается со следующих значений clip-path , заданных в CSS и описывающих маску в виде многоугольника:
Эксперименты со свойством clip-path, область обрезки задаётся в виде многоугольника
Если все свойства polygon установлены в 0 — то изображение будет попросту скрыто. Область обрезки изображения можно задавать не только в виде многоугольника, но и в виде круга:
Вот как это выглядит.
Эксперименты со свойством clip-path, область обрезки задаётся в виде круга
Здесь можно поэкспериментировать с этим свойством.
▍CSS-свойство clip-path и доступность контента
Элемент, к которому применено свойство clip-path , скрыт лишь визуально. До него можно добраться с помощью клавиатуры, он доступен для программ чтения с экрана.
Манипуляции с цветом текста и с размером шрифта
Хотя скрытие текста путём изменения его цвета или размеров шрифта распространено не так широко, как ранее рассмотренные методики скрытия элементов, в некоторых случаях это может пригодиться.
▍Настройка прозрачности цвета
Если использовать для текста прозрачный цвет, то этот текст окажется невидимым. Это может оказаться полезным при создании кнопок, на которых используются только значки.
▍Настройка размера шрифта
Кроме того, если установить размер шрифта в значение 0 , это тоже позволит скрыть текст.
Рассмотрим следующий пример. Здесь имеется кнопка, структура которой задана следующим HTML-кодом:
Наша цель заключается в том, чтобы скрыть текст этой кнопки, но при этом оставить его доступным для ассистивных технологий. Для того чтобы это сделать я воспользовался следующим CSS-кодом:
Теперь текст оказывается скрытым. Надо отметить, что эта методика будет работать и без изменения цвета текста. Но я, для того, чтобы разобрать разные варианты скрытия текста, изменил тут и цвет.

1. Содержимое кнопки выровнено по центру. 2. Тексту назначен прозрачный цвет. 3. Размер шрифта установлен в 0
→ Вот демонстрация для этого примера
HTML-атрибут aria-hidden
При добавлении к элементу атрибута aria-hidden этот элемент удаляется из дерева доступности. Это позволяет облегчить работу со страницей пользователям, применяющим программы для чтения с экрана. Обратите внимание на то, что элемент с таким атрибутом видим на странице. Он невидим только для ассистивных технологий.
В этом примере имеется кнопка Menu со значком и меткой. Атрибут aria-hidden=»true» позволяет скрыть эту кнопку от программ для чтения с экрана.
Этот атрибут, в соответствии с материалами MDN, находит применение в следующих сценариях:
- Скрытие декоративных элементов наподобие значков и изображений.
- Скрытие дублирующегося текста.
- Скрытие свёрнутых элементов или элементов, находящихся за пределами экрана.
▍Атрибут aria-hidden и доступность контента
Этот атрибут создан специально для того, чтобы скрывать контент от ассистивных технологий. Но элементы при этом видны на странице, с ними можно взаимодействовать при помощи клавиатуры.
Анимация и интерактивность
Метод скрытия элементов Доступность Возможность работы с помощью клавиатуры Поддержка CSS-переходов HTML-атрибут hidden Нет Нет Нет CSS-свойство display Нет Нет Нет CSS-свойство opacity Да Да Да CSS-свойство visibility Нет Нет Да CSS-свойство clip-path Да Да Да Если нужно анимировать скрытый элемент, например, мобильную навигационную панель, этот элемент должен быть создан с учётом его доступности. Ниже мы рассмотрим неудачные и удачные примеры работы с элементами с точки зрения доступности. Это позволит нам избежать ошибок, которые усложняют работу с сайтами для пользователей, применяющих ассистивные технологии.
▍Анимация меню: неправильный подход
У нас имеется меню, которое, при раскрытии, должно выезжать из-за пределов экрана. Легче всего это сделать с помощью следующего CSS-кода:
Благодаря этому коду меню будет разворачиваться и сворачиваться, основываясь на классе .active , который будет добавлен с помощью следующего JavaScript-кода:
Вот как выглядит работа с таким меню.
Выезжающее меню в действии
Может показаться, что мы добились хороших результатов, создавая это меню, но тут допущена одна большая ошибка. Использование свойства opacity: 0 не уберёт навигационные элементы из дерева доступности. Даже если меню на странице не видно, до него можно добраться с помощью клавиатуры, с ним смогут работать средства для чтения с экрана. Для того чтобы не путать пользователей, пользующихся такими средствами, меню нужно скрыть и от этих средств.
Вот дерево доступности рассматриваемой страницы, построенное средствами вкладки Accessibility инструментов разработчика Chrome.

Дерево доступности неудачно спроектированного скрытого меню
Дерево доступности — это, в двух словах, список всего того, к чему могут получить доступ пользователи, применяющие средства для чтения с экрана. В нашем случае им доступны все пункты меню, невидимого на экране. Здесь можно обнаружить две проблемы, которые нам нужно решить:
- Нужно сделать так, чтобы до скрытых элементов меню нельзя было добраться с помощью клавиатуры.
- Нужно, чтобы средства для чтения с экрана не видели бы скрытое меню и не читали бы соответствующее содержимое.

Программа для чтения с экрана видит то, чего она видеть не должна
→ Вот рабочий вариант этого примера
Займёмся исправлением вышеозначенных ошибок.
▍Анимация меню: исправление ошибок
Для того чтобы улучшить работу меню и исправить ошибки, нужно воспользоваться CSS-свойством visibility: hidden . Это позволит и скрыть меню со страницы, и не дать работать с ним средствам для чтения с экрана. Вот CSS-код, исправляющий проблему:
После применения этого кода свёрнутое меню исчезнет с экрана и из «поля зрения» ассистивных технологий. Снова исследуем страницу с помощью VoiceOver.

Программа для чтения с экрана не видит ничего лишнего
→ Вот проект, иллюстрирующий пример
Элементы checkbox собственной разработки

Элемент checkbox
Стандартные флажки, элементы <input> типа checkbox , сложно настраивать. Если нам нужно их настраивать — это значит, что нам понадобится создать собственную реализацию подобного элемента. Взглянем на его базовый HTML-код:
Для настройки флажка требуется возможность скрывать элемент с учётом нужд ассистивных технологий. Для того чтобы это сделать, нужно пользоваться свойством position , а также и другими свойствами. Вот CSS-класс, который можно назвать sr-only или visually-hidden , который скрывает элемент лишь визуально, но оставляет доступным для средств чтения с экрана и для клавиатурной навигации.
Благодаря использованию подобного класса элемент checkbox собственной разработки не теряет доступности. Вот более подробный рассказ о таком элементе. А вот — демонстрация работы с подобным элементом.
Скрытие содержимого от программ для чтения с экрана
▍Скрытие некоторых символов

Заголовок, в котором нужно скрыть смайлик
В заголовке, показанном выше, использован смайлик. Если этот смайлик не скрыть от ассистивных технологий, то средство для чтения с экрана, читая заголовок, произнесёт следующее:
Разные смайлики имеют разные текстовые описания, озвучиваемые средствами для чтения с экрана. Представьте себе ощущения пользователя, который, заглянув на страницу, услышит нечто подобное. Он, наверняка, почувствует, что с этой страницей что-то не так. Для того чтобы не перегружать пользователей ненужной информацией, тут стоит воспользоваться атрибутом aria-hidden . А именно, я поместил смайлик в тег <span> с атрибутом aria-hidden=»true» и скрыл тем самым его от средств для чтения с экрана.
Код страницы изменился не сильно, но это маленькое изменение позволит сильно улучшить удобство работы со страницей для пользователей, применяющих ассистивные технологии.
▍Скрытие кнопок

Скрытие кнопки
В Twitter есть кнопка с меткой See New Tweets , которая скрыта от средств для чтения с экрана с помощью aria-hidden . Эта кнопка выводится на странице (оставаясь скрытой для ассистивных технологий) при появлении новых твитов.
▍Скрытие декоративных элементов

Скрытый декоративный элемент
Точка между именем пользователя и датой носит декоративный характер. В результате эта точка имеет атрибут aria-hidden=»true» , благодаря чему она не «озвучивается» средствами для чтения с экрана.
Итоги
Здесь мы рассмотрели различные методики скрытия элементов веб-страниц и проанализировали эти методики с точки зрения доступности контента. Надеемся, этот материал поможет вам в разработке проектов, с которыми будет удобно работать самым разным категориям пользователей.
Уважаемые читатели! Какими методами скрытия элементов веб-страниц вы пользуетесь?
CSS Layout — The display Property
The display property is the most important CSS property for controlling layout.
The display Property
The display property specifies if/how an element is displayed.
Every HTML element has a default display value depending on what type of element it is. The default display value for most elements is block or inline .
Click to show panel
This panel contains a <div> element, which is hidden by default ( display: none ).
It is styled with CSS, and we use JavaScript to show it (change it to ( display: block ).
Block-level Elements
A block-level element always starts on a new line and takes up the full width available (stretches out to the left and right as far as it can).
Examples of block-level elements:
- <div>
- <h1> — <h6>
- <p>
- <form>
- <header>
- <footer>
- <section>
Inline Elements
An inline element does not start on a new line and only takes up as much width as necessary.
This is an inline <span> element inside a paragraph.
Examples of inline elements:
- <span>
- <a>
- <img>
Display: none;
display: none; is commonly used with JavaScript to hide and show elements without deleting and recreating them. Take a look at our last example on this page if you want to know how this can be achieved.
The <script> element uses display: none; as default.
Override The Default Display Value
As mentioned, every element has a default display value. However, you can override this.
Changing an inline element to a block element, or vice versa, can be useful for making the page look a specific way, and still follow the web standards.
A common example is making inline <li> elements for horizontal menus:
Example
Note: Setting the display property of an element only changes how the element is displayed, NOT what kind of element it is. So, an inline element with display: block; is not allowed to have other block elements inside it.