Как сделать границы таблицы в css

Оформляем таблицы с помощью CSS: как работать с полями, границами и свойством z-index

Оформляем таблицы с помощью CSS: как работать с полями, границами и свойством. главное изображение

Ещё несколько лет назад фронтенд-разработчики активно использовали табличную вёрстку для создания веб-страниц. Сегодня появились более удобные инструменты, а тег <table> теперь применяется по прямому назначению: для создания таблиц с данными. Однако оформлять таблицы по-прежнему не так просто. Некоторые CSS-свойства, например, margin , border-radius , z-index , не работают с элементами таблиц <tbody> , <thead> , <tr> . Статья поможет обойти эти ограничения.

Структура таблицы

Эталонная таблица<table class= "table" > <thead> <tr> <th> MO </th> <th> TU </th> <th> WE </th> <th> TH </th> <th> FR </th> <th> SA </th> <th> SU </th> </tr> </thead> <tbody class= "section section-step" > <tr class= "sub-header" > <th colspan= "7" > Working hours </th> </tr> <tr> <td> 4 </td> <td> 5 </td> <td> 5 </td> <td> 5 </td> <td> 5 </td> <td> 0 </td> <td> 0 </td> </tr> </tbody> <tbody class= "section section-step" > <tr class= "sub-header" > <th colspan= "7" > Workout </th> </tr> <tr> <td> 0.5 </td> <td> 0.5 </td> <td> 0.5 </td> <td> 1 </td> <td> 0.5 </td> <td> 2 </td> <td> 0 </td> </tr> </tbody> <tbody class= "section" > <tr class= "section-header" > <th colspan= "7" > Total </th> </tr> <tr> <td> 8.5 </td> <td> 8.5 </td> <td> 9.5 </td> <td> 10 </td> <td> 5.5 </td> <td> 2 </td> <td> 0 </td> </tr> </tbody> </table>

Выше представлена структура таблицы в HTML. В <thead> содержится главное название. В таблице есть несколько секций <tbody> , каждая из которых имеет собственный подзаголовок.

Что не так с margin и как оформить отступы для элементов таблицы

Как видно на иллюстрации в начале статьи, между главным заголовком и секцией <tbody> , а также между остальными секциями <tbody> , есть отступы. Можно подумать, что они определяются свойствами margin-top для <tbody> , но это не так.

Если попытаться использовать margin-top для оформления <tbody> , <thead> или <tr> , добиться отступов не удастся. Чтобы margin заработали, можно изменить свойство display , которое менять опасно, так как изменения могут нарушить форматирование таблицы. Поэтому лучше воспользоваться альтернативными решениями, которые описаны ниже.

Свойство border

Самый простой способ получить отступы без использования margin — применить к <tbody> border-top: 1 em .

Все секции <tbody> , у которых должны быть отступы, имеют класс .section . Чтобы свойство border-top сработало, необходимо применить к таблице border-collapse: collapse .

Псевдоэлементы ::before и ::after

Псевдоэлементы ::before и ::after — ещё один способ добавить отступы для элементов таблицы.

В данном случае создаётся пустой ряд, который обеспечивает визуальный отступ между секциями <tbody> .

Вы можете использовать для оформления отступов как псевдоэлементы, так и свойство border .

Как применить к элементам таблицы border-radius

Задача: добавить к секциям <tbody> границы и применить к ним border-radius . Напрямую это сделать невозможно — border и border-radius не работают с <tbody> .

Пример выше показывает, как с помощью box-shadow добиться практически такого же результата, как с помощью border при работе с нетабличными элементами.

Как оформлять ячейки таблицы

Внешний вид текущей таблицы (см. иллюстрацию ниже) отличается от эталонного варианта, который представлен в начале статьи.

ячейчки.section-step th , .section-step td < border : 0 solid #ccc ; >.section-step th :first-child , .section-step td :first-child < border-left-width : 1px ; >.section-step th :last-child , .section-step td :last-child < border-right-width : 1px ; >.section-step tr :first-child th , .section-step tr :first-child td < border-top-width : 1px ; >.section-step tr :first-child th :first-child , .section-step tr :first-child td :first-child < border-top-left-radius : 0.25em ; >.section-step tr :first-child th :last-child , .section-step tr :first-child td :last-child < border-top-right-radius : 0.25em ; >.section-step tr :last-child th , .section-step tr :last-child td < border-bottom-width : 1px ; >.section-step tr :last-child th :first-child , .section-step tr :last-child td :first-child < border-bottom-left-radius : 0.25em ; >.section-step tr :last-child th :last-child , .section-step tr :last-child td :last-child

В примере выше стили применяются к соответствующим элементам th и td ячеек таблицы. К ячейкам, которые находятся в углах таблицы, применяется border-radius . Все ячейки, которые находятся по краям таблицы, имеют границы. Селекторы :first-child и :last-child позволяют обращаться к нужным ячейкам.

Как применять z-index к элементам таблицы

проблемы с box-shadowЗаключение

Чтобы сделать таблицы визуально привлекательными, приходится использовать неочевидные трюки CSS. Но этим и хороши CSS — с их помощью можно решить практически любую задачу по оформлению веб-элементов.

При работе с таблицами возникает соблазн переопределить свойство display . Но это приведёт к дополнительным сложностям: придётся вручную определять ширину ячеек, чтобы таблица нормально отображалась. Поэтому удобнее пользоваться предложенными выше трюками, которые позволяют оформлять таблицы элегантно и без лишнего кода.

Адаптированный перевод статьи Styling HTML Tables: How to Apply Margins, Borders and z-index on Table Elements by Markus Oberlehner. Мнение автора оригинальной публикации может не совпадать с мнением администрации «Хекслета».

Как добавить внутренние линии (границы) в таблицу с помощью CSS

Узнайте, как создать рамку таблицы CSS всего за пять минут

Возможно, вы слышали, что таблицы CSS и HTML не смешиваются. Это не вариант. Да, использование HTML-таблиц для разметки больше не является лучшей практикой веб-дизайна, поскольку они были заменены стилями разметки CSS, но таблицы по-прежнему являются правильной разметкой, используемой для добавления табличных данных на веб-страницу.

Поскольку многие веб-профессионалы избегают таблиц, считая их ничем иным, как проблемами, многие из этих специалистов не имеют большого опыта работы с этим общим элементом HTML, и им трудно добавлять внутренние строки в ячейки таблицы на веб-странице.

CSS Table Borders

Когда вы используете CSS для добавления границ в таблицы, он добавляет только границы вокруг внешней части таблицы. Если вы хотите добавить внутренние линии в отдельные ячейки этой таблицы, вам нужно добавить границы для внутренних элементов CSS. Вы можете использовать тег HR, чтобы добавить строки внутри отдельных ячеек.

Чтобы применить стили, описанные в этом руководстве, вам нужна таблица на веб-странице. Затем вы создаете таблицу стилей в виде внутренней таблицы стилей в заголовке вашего документа (если вы имеете дело только с одной страницей) или присоединяете к документу как внешнюю таблицу стилей (если на сайте несколько страниц). Вы помещаете стили для добавления внутренних линий в таблицу стилей.

Прежде чем ты начнешь

Решите, где вы хотите, чтобы строки отображались в таблице. У вас есть несколько вариантов, в том числе:

  • Окружая все клетки, чтобы сформировать сетку
  • Расположение линий между столбцами
  • Просто между рядами
  • Между конкретными столбцами или строками.

Вы также можете расположить линии вокруг отдельных ячеек или внутри отдельных ячеек.

Вам также понадобится добавить свойство border-collapse в свой CSS для вашей таблицы. Это сворачивает границы в одну строку между каждой ячейкой и позволяет границам строк таблицы функционировать должным образом. Прежде чем что-то делать, добавьте следующий блок в ваш CSS.

Как добавить линии вокруг всех ячеек в таблице

Чтобы добавить линии вокруг всех ячеек в вашей таблице, создав эффект сетки, добавьте следующее в свою таблицу стилей:

Как добавить строки между столбцами в таблице

Чтобы добавить линии между столбцами для создания вертикальных линий, идущих сверху вниз по столбцам таблицы, добавьте в таблицу стилей следующее:

Если вы не хотите, чтобы вертикальные линии отображались в первом столбце, вы можете использовать псевдокласс first-child , чтобы настроить таргетинг только на те элементы, которые появляются первыми в их ряду, и убрать границу.

Как добавить строки между строками в таблице

Как и при добавлении линий между столбцами, вы можете добавить горизонтальные линии между строками с одним простым стилем, добавленным в таблицу стилей, следующим образом:

Чтобы убрать границу из нижней части таблицы, вы бы снова положились на псевдокласс. В этом случае вы бы использовали last-child для таргетинга только на последний ряд.

Как добавить строки между определенными столбцами или строками в таблице

Если вам нужны только строки между конкретными строками или столбцами, вы можете использовать класс в этих ячейках или строках. Если вы предпочитаете более чистую разметку, вы можете использовать псевдокласс nth-child , чтобы выбрать конкретные строки и столбцы в зависимости от их положения.

Например, если вы хотите настроить таргетинг только на второй столбец в каждой строке, вы можете использовать nth-child (2), чтобы применить CSS только ко второму элементу в каждой строке.

То же самое относится и к строкам. Вы можете настроить таргетинг на конкретную строку, используя nth-child .

Как добавить линии вокруг отдельных ячеек в таблице

Хотя вы, безусловно, можете использовать псевдоклассы для нацеливания на отдельные ячейки, самый простой способ справиться с такой ситуацией &#8211; это CSS-класс. Чтобы добавить линии вокруг отдельных ячеек, вы добавляете класс в ячейки, вокруг которых хотите создать рамку:

Затем добавьте следующий CSS в вашу таблицу стилей:

Как добавить строки внутри отдельных ячеек в таблице

Если вы хотите добавить строки внутри содержимого ячейки, проще всего это сделать с помощью тега горизонтального правила ( ).

Полезные советы

Если вы предпочитаете контролировать промежутки между ячейками таблицы вручную, удалите следующую строку ранее:

Этот атрибут отлично подходит для стандартных таблиц, но он значительно менее гибок, чем CSS, так как вы можете определить только ширину границы и иметь ее только вокруг всех ячеек таблицы или без нее.

CSS урок 11. Свойства таблицы и табличная верстка

Свойство рассматривается в одном из предыдущих уроков и включает одновременно несколько свойств:

  • BORDER-STYLE (СТИЛЬ ГРАНИЦЫ)
  • BORDER-WIDTH (ШИРИНА ГРАНИЦЫ)
  • BORDER-COLOR (ЦВЕТ ГРАНИЦЫ)

Существует также сборное правило:

border:border-width border-style border-color; border: 1px solid #000;

border-collapse
(слияние границы)

Значения:

  • collapse (слитая граница)
  • separate (вокруг каждой ячейки &#8212; своя собственная рамка)

Пример:

Результат:

свойство collapse

width и height
(высота и ширина таблицы)

Значения:

  • px
  • %

Пример:

Результат:

Таблица Таблица
Таблица Таблица

text-align
(выравнивание по горизонтали)

Значения:

  • center (по центру)
  • left (по левому краю)
  • right (по правому краю)
  • justify (по ширине)

vertical-align
(выравнивание по вертикали)

Значения:

  • baseline (по базовой линии)
  • sub (как подиндекс)
  • super (как надиндекс)
  • top (по верхнему краю)
  • middle (посередине)
  • bottom (по нижнему краю)
  • % (от высоты межстрочного интервала)

Пример:

Результат:

Таблица Таблица
Таблица Таблица

padding
(внутренние отступы в таблице)

Данное свойство полностью соответствует правилам данного свойства для всех элементов. Поэтому рассмотреть его можно в одном из предыдущих уроков.

background-color (задний фон)
color (цвет текста)

Данные свойства соответствуют правилом их определения для всех остальных элементов. Поэтому темы можно рассмотреть из предыдущих уроков: задний фон и цвет.

  1. Добавить свойства для следующих тегов (если еще не добавлены):
    • body основная страница
    • p абзац
    • a гиперссылка
    • h1 , h2 , h3 , … заголовки
    • ul , ol , li списки, пункты списков
    • table , tr , td таблица, строка, ячейка строки
    • hr линия
    • span , div строчный тег, блочный тег
    • Добавить комментарий с пояснением к каждому свойству:

    css свойства

    Табличная верстка CSS

    Благодаря большому числу свойств таблиц и вариациям их оформления, таблицы долгое время были некоторым станартом верстки веб-страниц. Если сделать границы таблицы невидимыми, то можно использовать ее отдельные ячейки в качестве отдельных блоков сраницы: шапка, меню, подвал и т.п.

    Но это не совсем правильно, ведь каждому тегу есть свое назначение, и таблицы не должны были служить для верстки страниц. Однако отсутствие альтернативы сподвигало дизайнеров именно на такой метод верстки.

    Сейчас есть другой способ &#8212; использование слоев, которые постепенно заменили таблицы в этом виде работы с веб-страницей. Однако и в наше время некоторые дизайнеры успешно используют табличную верстку.

    Табличная верстка из двух колонок

    Один из самых распространённых способов верстки &#8212; две колонки, т.е. страница делится на две части.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *