HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Верстка таблиц никогда не была легкой задачей для разработчика. Помимо не самой простой структуры строк и столбцов возникает проблема адаптации таблиц под разные разрешения экрана. И чем больше информации в таблице, тем сложнее отображать ее на небольших разрешениях.</p>
1 <p>Верстка таблиц никогда не была легкой задачей для разработчика. Помимо не самой простой структуры строк и столбцов возникает проблема адаптации таблиц под разные разрешения экрана. И чем больше информации в таблице, тем сложнее отображать ее на небольших разрешениях.</p>
2 <p>В отличие от многих тегов, Bootstrap по умолчанию не переопределяет стили таблиц. Связано это с широким распространением этого элемента внутри других плагинов, таких, как календари, формы, доски.</p>
2 <p>В отличие от многих тегов, Bootstrap по умолчанию не переопределяет стили таблиц. Связано это с широким распространением этого элемента внутри других плагинов, таких, как календари, формы, доски.</p>
3 <p>В качестве примера урока сделаем небольшую таблицу с описанием профессий на Хекслете.</p>
3 <p>В качестве примера урока сделаем небольшую таблицу с описанием профессий на Хекслете.</p>
4 <p><a>Codepen</a></p>
4 <p><a>Codepen</a></p>
5 - <p>Не самая удобная таблица для восприятия информации. Отсутствие отступов и разделения ячеек мешают чтению. Так как Bootstrap не влияет на стили этой таблицы, то необходимо их подключить. Чтобы воспользоваться возможностями Bootstrap, нужно добавить класс<em>.table</em>к тегу &lt;table&gt;.</p>
5 + <p>Не самая удобная таблица для осприятия информации. Отсутствие отступов и разделения ячеек мешают чтению. Так как Bootstrap не влияет на стили этой таблицы, то необходимо их подключить. Чтобы воспользоваться возможностями Bootstrap, нужно добавить класс<em>.table</em>к тегу &lt;table&gt;.</p>
6 <p><a>Codepen</a></p>
6 <p><a>Codepen</a></p>
7 <p>Один лишь этот класс сделал таблицу доступнее. Появились внутренние отступы в ячейках, а все строки получили разделитель в виде границы. При изучении утилит появится возможность самостоятельно контролировать отступы и границы у формы. К этим утилитам мы придем в одном из следующих уроков.</p>
7 <p>Один лишь этот класс сделал таблицу доступнее. Появились внутренние отступы в ячейках, а все строки получили разделитель в виде границы. При изучении утилит появится возможность самостоятельно контролировать отступы и границы у формы. К этим утилитам мы придем в одном из следующих уроков.</p>
8 <p>Если нет необходимости в границах внутри таблицы, то можно добавить класс<em>.table-borderless</em>, который удалит все границы, оставив, при этом внутренние отступы внутри ячеек. Большинство классов являются интуитивно понятными и их можно найти в документации. Основными классами так же являются:</p>
8 <p>Если нет необходимости в границах внутри таблицы, то можно добавить класс<em>.table-borderless</em>, который удалит все границы, оставив, при этом внутренние отступы внутри ячеек. Большинство классов являются интуитивно понятными и их можно найти в документации. Основными классами так же являются:</p>
9 <ul><li><em>.table-dark</em>- класс задает темную тему для таблицы. Текст при этом становится белым.</li>
9 <ul><li><em>.table-dark</em>- класс задает темную тему для таблицы. Текст при этом становится белым.</li>
10 <li><em>.table-hover</em>- изменение фона при наведении.</li>
10 <li><em>.table-hover</em>- изменение фона при наведении.</li>
11 <li><em>.table-striped</em>- стилизация строк в виде зебры. Несколько фонов чередуются друг за другом.</li>
11 <li><em>.table-striped</em>- стилизация строк в виде зебры. Несколько фонов чередуются друг за другом.</li>
12 </ul><p>Применив все классы получится следующая таблица:</p>
12 </ul><p>Применив все классы получится следующая таблица:</p>
13 <p><a>Codepen</a></p>
13 <p><a>Codepen</a></p>
14 <p>В примере так же был добавлен тег &lt;caption&gt;, отвечающий за создание заголовка таблицы. По умолчанию в Bootstrap этот заголовок выводится под таблицей серым шрифтом. Это сделано по причине того, что таблицы зачастую находятся после заголовка HTML и добавление еще одного заголовка не нужно.</p>
14 <p>В примере так же был добавлен тег &lt;caption&gt;, отвечающий за создание заголовка таблицы. По умолчанию в Bootstrap этот заголовок выводится под таблицей серым шрифтом. Это сделано по причине того, что таблицы зачастую находятся после заголовка HTML и добавление еще одного заголовка не нужно.</p>
15 <h2>Адаптивность</h2>
15 <h2>Адаптивность</h2>
16 <p>Адаптивность и таблицы - страшный сон верстальщика. Браузеры не имеют встроенных средств для создания адаптивных таблиц. По этой причине разработчики используют или сторонние плагины, или отказываются от таблиц. Второй вариант не является хорошей практикой, так как с точки зрения семантики таблицы должны быть таблицами. Это позволит правильно интерпретировать данные для людей с нарушениями зрения. Если вместо таблицы использовать блоки, то скринридер не сможет корректно распознать строки и столбцы.</p>
16 <p>Адаптивность и таблицы - страшный сон верстальщика. Браузеры не имеют встроенных средств для создания адаптивных таблиц. По этой причине разработчики используют или сторонние плагины, или отказываются от таблиц. Второй вариант не является хорошей практикой, так как с точки зрения семантики таблицы должны быть таблицами. Это позволит правильно интерпретировать данные для людей с нарушениями зрения. Если вместо таблицы использовать блоки, то скринридер не сможет корректно распознать строки и столбцы.</p>
17 <p>В Bootstrap для адаптации таблиц используют прокрутку с помощью свойства<em>overflow-x</em>. Если таблица не помещается в рамки своего родительского блока, то появляется горизонтальная прокрутка. Это редкая ситуация, когда горизонтальная прокрутка не мешает, а помогает пользователю.</p>
17 <p>В Bootstrap для адаптации таблиц используют прокрутку с помощью свойства<em>overflow-x</em>. Если таблица не помещается в рамки своего родительского блока, то появляется горизонтальная прокрутка. Это редкая ситуация, когда горизонтальная прокрутка не мешает, а помогает пользователю.</p>
18 <p>Для создания адаптивной таблицы используется класс<em>.table-responsive</em>. При его установке на любом разрешении экрана класс будет адаптировать таблицы при нехватке места. Помимо этого для класса существуют префиксы Bootstrap, которые используются для адаптивности:</p>
18 <p>Для создания адаптивной таблицы используется класс<em>.table-responsive</em>. При его установке на любом разрешении экрана класс будет адаптировать таблицы при нехватке места. Помимо этого для класса существуют префиксы Bootstrap, которые используются для адаптивности:</p>
19 <ul><li><em>-sm</em></li>
19 <ul><li><em>-sm</em></li>
20 <li><em>-md</em></li>
20 <li><em>-md</em></li>
21 <li><em>-lg</em></li>
21 <li><em>-lg</em></li>
22 <li><em>-xl</em></li>
22 <li><em>-xl</em></li>
23 </ul><p>Поэкспериментируйте с адаптивной таблицей на<a>Codepen</a>.</p>
23 </ul><p>Поэкспериментируйте с адаптивной таблицей на<a>Codepen</a>.</p>
24 <h2>Настройка таблиц с помощью SASS</h2>
24 <h2>Настройка таблиц с помощью SASS</h2>
25 <p>Многие стандартные стили таблиц в Bootstrap можно изменить с помощью SASS. Настройки хранятся в файле<em>_variables.scss</em>. Вот лишь некоторые из них:</p>
25 <p>Многие стандартные стили таблиц в Bootstrap можно изменить с помощью SASS. Настройки хранятся в файле<em>_variables.scss</em>. Вот лишь некоторые из них:</p>
26 <ul><li>$table-cell-padding-x и $table-cell-padding-y - внутренние отступы ячеек. По умолчанию имеют значение<em>.5rem</em>.</li>
26 <ul><li>$table-cell-padding-x и $table-cell-padding-y - внутренние отступы ячеек. По умолчанию имеют значение<em>.5rem</em>.</li>
27 <li>$table-cell-vertical-align - выравнивание контента внутри ячеек. По умолчанию имеет значение<em>top</em>.</li>
27 <li>$table-cell-vertical-align - выравнивание контента внутри ячеек. По умолчанию имеет значение<em>top</em>.</li>
28 <li>$table-th-font-weight - установка значения<em>font-weight</em>для ячеек &lt;th&gt;.</li>
28 <li>$table-th-font-weight - установка значения<em>font-weight</em>для ячеек &lt;th&gt;.</li>
29 </ul><p>Эти, и другие настройки помогают гибко адаптировать Bootstrap под проект, не прибегая к переопределению стилей с помощью селекторов.</p>
29 </ul><p>Эти, и другие настройки помогают гибко адаптировать Bootstrap под проект, не прибегая к переопределению стилей с помощью селекторов.</p>
30 <h2>Доступность таблиц</h2>
30 <h2>Доступность таблиц</h2>
31 <p>Данная секция никак напрямую не связана с Bootstrap, но знать о данном приеме полезно, если вы хотите адаптировать свой сайт для людей с ограниченным зрением. В спецификации WCAG, которая описывает возможности HTML для доступности есть упоминание работы с таблицами.</p>
31 <p>Данная секция никак напрямую не связана с Bootstrap, но знать о данном приеме полезно, если вы хотите адаптировать свой сайт для людей с ограниченным зрением. В спецификации WCAG, которая описывает возможности HTML для доступности есть упоминание работы с таблицами.</p>
32 <p>Существует специальный атрибут<em>scope</em>, который позволяет напрямую связать заголовки таблицы со строками. В базовом варианте атрибут принимает одно из двух значений:<em>col</em>и<em>row</em>. Значением<em>col</em>указываются заголовки столбцов таблицы, а<em>row</em>указывает на заголовок строки.</p>
32 <p>Существует специальный атрибут<em>scope</em>, который позволяет напрямую связать заголовки таблицы со строками. В базовом варианте атрибут принимает одно из двух значений:<em>col</em>и<em>row</em>. Значением<em>col</em>указываются заголовки столбцов таблицы, а<em>row</em>указывает на заголовок строки.</p>
33 <p>После этого экранные скринридеры смогут явно связать заголовки таблицы и их значение.</p>
33 <p>После этого экранные скринридеры смогут явно связать заголовки таблицы и их значение.</p>
34 <p>При использовании атрибута<em>scope</em>есть возможность "выкинуть" ненужные столбцы. При воспроизведении таблицы речевыми движками в них нет необходимости. В текущем примере, при использовании скринридера в качестве заголовка строки выступит первый столбец. То есть цифра<em>1</em>. Оказавшись в столбце с описанием профессии и включив функцию прочтения названия ячейки мы получим ответ, что элемент расположен в столбце с именем "Описание" и строке с именем "1". Если таблица небольшая, то в этом нет ничего страшного, но представьте, что пользователь находится в таблице из десятка различных заголовков, с подтаблицами и объединенными ячейками.</p>
34 <p>При использовании атрибута<em>scope</em>есть возможность "выкинуть" ненужные столбцы. При воспроизведении таблицы речевыми движками в них нет необходимости. В текущем примере, при использовании скринридера в качестве заголовка строки выступит первый столбец. То есть цифра<em>1</em>. Оказавшись в столбце с описанием профессии и включив функцию прочтения названия ячейки мы получим ответ, что элемент расположен в столбце с именем "Описание" и строке с именем "1". Если таблица небольшая, то в этом нет ничего страшного, но представьте, что пользователь находится в таблице из десятка различных заголовков, с подтаблицами и объединенными ячейками.</p>
35 <p>В этом случае озвучивание заголовка строки и столбца не даст полной информации о том, что за данные находятся в ячейке. Установив атрибут scope="row" для ячейки внутри строки мы укажем использовать это название как заголовок строки. Переделав немного пример выше, получится следующий результат:</p>
35 <p>В этом случае озвучивание заголовка строки и столбца не даст полной информации о том, что за данные находятся в ячейке. Установив атрибут scope="row" для ячейки внутри строки мы укажем использовать это название как заголовок строки. Переделав немного пример выше, получится следующий результат:</p>
36 <p>Теперь, при чтении ячейки с описанием профессии, скринридер укажет, что заголовок строки: "Фронтенд-программист", а заголовок столбца "Название профессии"</p>
36 <p>Теперь, при чтении ячейки с описанием профессии, скринридер укажет, что заголовок строки: "Фронтенд-программист", а заголовок столбца "Название профессии"</p>