Вертикальний текст у заголовках таблиць HTML + CSS

2022-Nov-08

Візуалізація таблиць на сайті, особливо на мобільних пристроях, завжди є пригодою. Теоретично все виглядає добре, а у реальності – або дані у таблиці займають багато місця та інші колонки стискаються, або заголовки містять багато слів і виглядають не дуже гарно.

Таблиці дуже важко переносять зменшення розмірів екрану. Доводиться використовувати горизонтальне прокручування, щоб відобразити таблицю. І якщо це вирішує проблему з таблицями, проблема з заголовками таблиць залишається. Сьогодні ми навчимося робити вертикальні заголовки для таблиці, що дозволить розумно витрачати місце і відповідає стандартам оформлення таблиць для друкованих видань (якщо вам це важливо).

У будь-якому випадку, кожна адмін панель неможлива без табличних даних. Бізнес дуже любить таблиці, тому вміння створювати їх дуже важливі для frontend розробника.

Для проекту – створимо файл HTML і розмістимо до нього таблицю з реальними даними. Я скористався структурою проекту Bootstrap.


Зверніть увагу – всі класи взяті з Bootstrap. Ті дані, які потрібно повернути на 90 градусів, обернемо span з класом .rotate-sm-90. Звичайно ж, назву класу можна замінити на те, що вам сподобається. В принципі, замість span можна застосовувати будь-який тег, проте нам здалося логічно застосувати саме span.

Тепер – перейдемо у файл style.css і внесемо стилі для класу .rotate-sm-90.

 .rotate-sm-90 {
    font-size: 1rem;
    writing-mode:vertical-lr;
}

Свойство writing-mode відповідає за те, як браузер повинен відображати написання тексту. Не забувайте, що існують мови, які пишуться справа наліво та зверху до низу. Зверніть увагу, що у даної властивості багато значень, але частина з них є експериментальною, а частина – застаріла. І для вертикального вирівнювання залишається дві властивості: vertical-lr і vertical-rl.

Обидві ці властивості застосовуються і роблять текст вертикальним, проте текст відображається зверху вниз, а нам потрібно навпаки. Додамо трансформацію та отримаємо потрібний результат:

.rotate-sm-90 {
    font-size: 1rem;
    writing-mode:vertical-lr;
    transform: rotate(180deg);
}

Залишилося дописати медіазапит, щоб на великому екрані заголовки таблиці розміщувалися горизонтально, а на мобільних пристроях текст у заголовку ставав вертикальним:


@media (max-width: 768px) {
  .rotate-sm-90 {
    font-size: 1rem;
    writing-mode:vertical-lr;
    transform: rotate(180deg);
  }
}

І порівняйте результат на робочому столі:

І на мобільному:

Читати про writing-mode: Mozilla Developer

Завантажити файл з кодом: Download

Статті

Підсвічуємо НЕ ЛАТИНСЬКІ СИМВОЛИ у коді та тексті
Тотальная інструкція по елементу Select у JavaScript
Кнопка "Показати пароль" на JavaScript + анімація