Как сделать таблицу с рамками
Сетка из линий вокруг каждой ячейки:
table {
border-collapse: collapse;
}
th,
td {
border: 1px solid #999;
padding: 6px 12px;
}borderуthиtdрисует рамку каждой ячейки.border-collapse: collapseуtableсклеивает рамки соседних ячеек в одну линию. Без него у каждой ячейки своя рамка, и между ними видны промежутки — «двойные рамки».paddingотодвигает текст от линий.
Подключите эти правила в файле стилей или в теге <style> — как в уроке Таблицы в HTML.
Другие варианты
Только горизонтальные линии между строками — чисто и современно:
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
padding: 8px 12px;
border-bottom: 1px solid #ddd;
text-align: left;
}Рамка вокруг всей таблицы без внутренних линий:
table {
border: 2px solid #333;
border-collapse: collapse;
}Полосы через строку («зебра») — каждая вторая строка тела таблицы с фоном:
tbody tr:nth-child(even) {
background-color: #f5f5f5;
}even — чётные строки, odd — нечётные.
Шапка другим цветом:
thead th {
background-color: #333;
color: #fff;
}Промежутки между ячейками
Если, наоборот, нужны отдельные ячейки с зазором, оставьте border-collapse: separate (так по умолчанию) и задайте зазор:
table {
border-collapse: separate;
border-spacing: 4px;
}Подводные камни
- Атрибут
border="1"у<table>браузеры всё ещё понимают, но он устарел. Рамки задавайте в CSS — так их вид настраивается как угодно. - Рамки задали только
table— линия будет только снаружи. Внутренние линии рисуют ячейки:th, td. - Скруглённые углы не появляются — при
border-collapse: collapseborder-radiusу таблицы не действует. Поставьтеborder-collapse: separate; border-spacing: 0;и скругляйте таблицу или оберните её в<div>со скруглением иoverflow: hidden. - Таблица вылезает за экран на телефоне — оберните её в
<div style="overflow-x: auto;">, и широкая таблица будет прокручиваться сама по себе. - В строке не хватает ячейки — пустую ячейку всё равно ставьте тегом
<td></td>: если её пропустить, строка станет короче, и на этом месте не будет ни рамки, ни фона.