9.1 Прокрутка (Scroll)
Таблиці часто використовуються для відображення структурованих даних, але вони можуть бути складними для відображення на пристроях з маленьким екраном. Адаптивні таблиці дозволяють покращити сприйняття і взаємодію з даними на різних пристроях, включаючи мобільні телефони і планшети. Розглянемо кілька технік для створення адаптивних таблиць.
Один з простих методів для створення адаптивних таблиць — додавання горизонтальної прокрутки. Цей метод зберігає структуру таблиці та дозволяє користувачам прокручувати дані по горизонталі на вузьких екранах.
Приклад:
.table-container {
overflow-x: auto;
width: 100%;
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Адаптивна таблиця з прокруткою</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="table-container">
<table>
<thead>
<tr>
<th>Колонка 1</th>
<th>Колонка 2</th>
<th>Колонка 3</th>
<th>Колонка 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>Дані 1</td>
<td>Дані 2</td>
<td>Дані 3</td>
<td>Дані 4</td>
</tr>
<!-- Інші рядки -->
</tbody>
</table>
</div>
</body>
</html>
Пояснення коду:
.table-container: додає горизонтальну прокрутку, якщо таблиця перевищує ширину контейнераtable: встановлює ширину таблиці на 100% і об'єднує кордони комірок
9.2 Приховування колонок (Column Hiding)
Цей метод передбачає приховування менш важливих колонок на вузьких екранах, щоб основні дані залишалися видимими. Це можна зробити за допомогою медіа-запитів.
Приклад:
@media (max-width: 600px) {
.hide {
display: none;
}
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Адаптивна таблиця з приховуванням колонок</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<table>
<thead>
<tr>
<th>Колонка 1</th>
<th>Колонка 2</th>
<th class="hide">Колонка 3</th>
<th class="hide">Колонка 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>Дані 1</td>
<td>Дані 2</td>
<td class="hide">Дані 3</td>
<td class="hide">Дані 4</td>
</tr>
<!-- Інші рядки -->
</tbody>
</table>
</body>
</html>
Пояснення коду:
.hide: приховує певні колонки на екранах шириною менше 600px за допомогою медіа-запитівtable: встановлює ширину таблиці на 100% і об'єднує кордони комірок
9.3. Перенесення в блоки (Stacking)
Перенесення в блоки перетворює рядки таблиці в блоки, які відображаються один під іншим на вузьких екранах. Це робить таблицю більш читабельною на мобільних пристроях.
Приклад:
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
@media (max-width: 600px) {
table, thead, tbody, th, td, tr {
display: block;
}
th {
display: none;
}
td {
display: flex;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #ccc;
}
td::before {
content: attr(data-label);
font-weight: bold;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Адаптивна таблиця з перенесенням в блоки</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<table>
<thead>
<tr>
<th>Колонка 1</th>
<th>Колонка 2</th>
<th>Колонка 3</th>
<th>Колонка 4</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Колонка 1">Дані 1</td>
<td data-label="Колонка 2">Дані 2</td>
<td data-label="Колонка 3">Дані 3</td>
<td data-label="Колонка 4">Дані 4</td>
</tr>
<!-- Інші рядки -->
</tbody>
</table>
</body>
</html>
Пояснення коду:
- Медіа-запити: перетворюють таблицю в блочні елементи на екранах завширшки менше 600px
td::before: додає псевдоелемент з назвою колонки перед кожним значенням комірки, щоб зберегти контекст даних
9.4. Трансформація в картки (Card Layout)
Цей метод передбачає перетворення кожного рядка таблиці в окрему картку на вузьких екранах. Це допомагає покращити читабельність даних на мобільних пристроях.
Приклад:
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
@media (max-width: 600px) {
table, thead, tbody, th, td, tr {
display: block;
}
th {
display: none;
}
tr {
margin-bottom: 10px;
border-bottom: 2px solid #ccc;
padding-bottom: 10px;
}
td {
display: flex;
justify-content: space-between;
padding: 10px 0;
border: none;
}
td::before {
content: attr(data-label);
font-weight: bold;
margin-right: 10px;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Адаптивна таблиця з картками</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<table>
<thead>
<tr>
<th>Колонка 1</th>
<th>Колонка 2</th>
<th>Колонка 3</th>
<th>Колонка 4</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Колонка 1">Дані 1</td>
<td data-label="Колонка 2">Дані 2</td>
<td data-label="Колонка 3">Дані 3</td>
<td data-label="Колонка 4">Дані 4</td>
</tr>
<!-- Інші рядки -->
</tbody>
</table>
</body>
</html>
Пояснення коду:
- Медіа-запити: перетворюють таблицю в блочні елементи та створюють картки на екранах шириною менше 600px
td::before: додає псевдоелемент з назвою колонки перед кожним значенням клітинки, щоб зберегти контекст даних
9.5 Використання CSS Frameworks
Багато CSS-фреймворків, таких як Bootstrap, пропонують готові рішення для створення адаптивних таблиць. Використання таких фреймворків спрощує процес і надає готові стилі та компоненти.
Приклад з використанням Bootstrap:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Адаптивна таблиця з Bootstrap</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<table class="table table-responsive">
<thead>
<tr>
<th>Колонка 1</th>
<th>Колонка 2</th>
<th>Колонка 3</th>
<th>Колонка 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>Дані 1</td>
<td>Дані 2</td>
<td>Дані 3</td>
<td>Дані 4</td>
</tr>
<!-- Інші рядки -->
</tbody>
</table>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
Пояснення коду:
table.table-responsive: клас Bootstrap, який додає горизонтальну прокрутку для таблиць на вузьких екранахcontainer: клас Bootstrap для центрування і задання максимальної ширини контейнера
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ