Простой (и довольно грубый) способ создания адаптивных таблиц
В настоящее время существует множество способов создания адаптивных таблиц.
Есть варианты с переворачиванием таблицы набок, превращением ее в круговую диаграмму, постепенным сужением столбцов, возможностью задания столбцов пользователем и даже с частичным прокруткой внутри таблицы. Все эти решения хороши, но тем не менее не лишены недостатков:
- Некоторые сложно реализовать в реальных условиях, особенно если в них
используются псевдоэлементы
::before
для генерации заголовков таблицы. - Некоторые из них (например, круговую диаграмму) можно использовать только для определенных типов табличных данных.
- Другие же решения могут сбить с толку конечного пользователя, в частности — решение с пропадающими столбцами.
Хотите увидеть суперпростой способ сделать таблицу адаптивной? Способ, содержащий всего лишь пару строк CSS и не требующий JavaScript? Взгляните:
Способ 1: Суперпростой
Все, что вам нужно сделать - обернуть таблицу в div
:
<div class="table-container">
<table>
...
<table>
</div>
И потом добавить простые стили:
.table-container
{
width: 100%;
overflow-y: auto;
_overflow: auto;
margin: 0 0 1em;
}
Способ 2: Добавление скроллбаров для iOS
Если вы откроете вышеуказанное демо на iOS-устройстве, например, на iPhone, то увидите, что там нет скроллбаров. И хотя пользователи могут сдвигать таблицу для прокрутки, это не так уж и очевидно. Мы можем исправить этот недостаток добавлением следующего CSS:
.table-container::-webkit-scrollbar
{
-webkit-appearance: none;
width: 14px;
height: 14px;
}
.table-container::-webkit-scrollbar-thumb
{
border-radius: 8px;
border: 3px solid #fff;
background-color: rgba(0, 0, 0, .3);
}
Способ 3: Скроллбары для всех
Если вы хотите заставить все браузеры и устройства отображать скроллбары, то для этого существует целый ряд решений на jQuery:
Способ 4: Добавление градиента
Вы заметили, что таблица выглядит «обрезанной» с правого края? Для придания
ему эффекта «растворения» вы можете использовать linear-gradient
. Чтобы
все хорошо работало на экране любого размера или во время прокрутки
пользователем, мы добавим в разметку два новых элемента:
<div class="table-container-outer">
<div class="table-container-fade"></div>
<div class="table-container">
<table>
...
<table>
</div>
</div>
</div>
И CSS:
.table-container-outer { position: relative; }
.table-container-fade
{
position: absolute;
right: 0;
width: 30px;
height: 100%;
background-image: -webkit-linear-gradient(0deg, rgba(255,255,255,.5), #fff);
background-image: -moz-linear-gradient(0deg, rgba(255,255,255,.5), #fff);
background-image: -ms-linear-gradient(0deg, rgba(255,255,255,.5), #fff);
background-image: -o-linear-gradient(0deg, rgba(255,255,255,.5), #fff);
background-image: linear-gradient(0deg, rgba(255,255,255,.5), #fff);
}
Итак, вот они, несколько простых (и довольно грубых) решений для создания адаптивных таблиц.
Что думаете?