empty-cells у CSS — межі й тло порожньої комірки таблиці


автор: Svitlana

Загальний опис

автор: NagarD

Нотатка

При одночасному додаванні до таблиці властивості border-collapse із значенням collapse, властивість empty-cells ігнорується.

автор: Svitlana

Синтаксис

empty-cells: show|hide|initial|inherit;

Властивість empty-cells може отримувати 4 значень:

show

Без задання. Відображає рамку навколо порожньої клітинки і фон в ній.

автор: Svitlana

hide

Рамка та фон в порожніх клітинках не відображається. Якщо всі клітинки в рядку порожні, то рядок ввесь ховається.

автор: Svitlana

initial

Встановлює цю властивість в значення без задання

автор: Svitlana

inherit

Успадкує значення властивості від свого батьківського елемента

автор: Svitlana

Значення без задання: show
Наслідує: Так
Анімується: Ні
JavaScript синтаксис: object.style.emptyCells="hide"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1.2 4 12 8
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

+ запропонувати свій приклад у пісочниці

Обидві таблиці мають порожню комірку: у верхній hide ховає її рамку, у нижній show (типово) — малює.

HTML

<table class="hide">
    <tr><td>hide</td><td></td></tr>
</table>
<table class="show">
    <tr><td>show</td><td></td></tr>
</table>

CSS

table {
    border-collapse: separate;
    margin-bottom: 12px;
}

td {
    border: 1px solid #0172ad;
    padding: 6px;
    min-width: 60px;
}

.hide { empty-cells: hide; }
.show { empty-cells: show; }
автор: Svitlana

Дві однакові таблиці підряд: перша з empty-cells: show, друга з hide. У кожній шість комірок — з текстом, зовсім порожня, з самими пробілами, з нерозривним пробілом, із прихованою дитиною й із visibility: hidden на самій комірці. Видно, що hide прибирає лише перші дві: нерозривний пробіл і прихована дитина рахуються за вміст. Пунктирна напрямна показує, що розміри в обох таблицях однакові. Третя таблиця — та сама з border-collapse: collapse: там hide не робить нічого.

HTML

<p class="cap">empty-cells: show — типове:</p>
<table class="t show">
    <tr>
        <td>текст</td>
        <td></td>
        <td>   </td>
        <td>&nbsp;</td>
        <td><span class="vh">X</span></td>
        <td class="vh">Y</td>
    </tr>
</table>

<p class="cap">empty-cells: hide — зникли лише дві перші порожні:</p>
<table class="t hide">
    <tr>
        <td>текст</td>
        <td></td>
        <td>   </td>
        <td>&nbsp;</td>
        <td><span class="vh">X</span></td>
        <td class="vh">Y</td>
    </tr>
</table>

<p class="legend">колонки: текст · порожня · самі пробіли · нерозривний пробіл · прихована дитина · прихована комірка</p>

<p class="cap">border-collapse: collapse — hide не діє зовсім:</p>
<table class="t hide coll">
    <tr>
        <td>текст</td>
        <td></td>
        <td>текст</td>
    </tr>
</table>

CSS

.cap {
    margin: 20px 0 8px;
    max-width: 620px;
    font: 600 .9em/1.45 system-ui, sans-serif;
    color: #5a6472;
}

.legend {
    margin: 8px 0 0;
    max-width: 620px;
    font: .78em/1.4 system-ui, sans-serif;
    color: #8a94a6;
}

.t {
    border-collapse: separate;
    border-spacing: 6px;
    outline: 1px dashed #b9c6d8;
    font: 13px/20px system-ui, sans-serif;
}

.t td {
    width: 70px;
    padding: 6px;
    background: #f2b134;
    border: 5px solid #c0392b;
}

.show {
    empty-cells: show;
}

.hide {
    empty-cells: hide;
}

.coll {
    border-collapse: collapse;
}

.coll td {
    border-color: #2f6fd0;
}

.vh {
    visibility: hidden;
}
автор: NagarD

Динамічний приклад

HTML

<table cellspacing="0" id="table">
  <tr>
    <th>Заголовок</th>
    <th>Заголовок</th>
    <th>Заголовок</th>
  </tr>
  <tr>
    <td></td>
    <td>Клітинка</td>
    <td>Клітинка</td>
  </tr>
  <tr>
    <td>Клітинка</td>
    <td></td>
    <td>Клітинка</td>
  </tr>
</table>
 <p>Натисність на кнопку, щоб побачити як змінюється візуалізація таблиці при різних значеннях властивості.</p>
<button id="b" data-ec="hide">TOGGLE EMPTY-CELLS</button>

CSS

body {
  text-align: center;
  padding-top: 20px;
}

table {
  border: solid 1px black;
  border-collapse: separate;
  border-spacing: 5px;
  width: 500px;
  margin: 0 auto;
  empty-cells: hide;
  font-size: 18px;
}

th, td {
  text-align: center;
  border: solid 1px black;
  padding: 10px;
}

button {
  margin-top: 10px;
  padding: 20px;
}
p{
  text-align: center;
  font-size: 18px;
}

JS

var b = document.getElementById('b'),
t = document.getElementById('table');

b.onclick = function () {
  if (this.getAttribute('data-ec') === 'hide') {
    t.style.emptyCells = 'show';
    this.setAttribute('data-ec', 'show');
  } else {
    t.style.emptyCells = 'hide';
    this.setAttribute('data-ec', 'hide');
  }
};
автор: Svitlana

Простий приклад використання

HTML

<p>Для таблиці задана властивість <b>empty-cells: hide;</b></p>
<table>
  <tr>
    <th>Заголовок</th>
    <th>Заголовок</th>
    <th>Заголовок</th>
  </tr>
  <tr>
    <td>Клітинка</td>
    <td>Клітинка</td>
    <td></td>
  </tr>
  <tr>
    <td>Клітинка</td>
    <td></td>
    <td>Клітинка</td>
  </tr>
</table>
<br>
<p>Для таблиці задана властивість <b>empty-cells: show;</b></p>
<table class="show">
  <tr>
    <th>Заголовок</th>
    <th>Заголовок</th>
    <th>Заголовок</th>
  </tr>
  <tr>
    <td>Клітинка</td>
    <td>Клітинка</td>
    <td></td>
  </tr>
  <tr>
    <td>Клітинка</td>
    <td></td>
    <td>Клітинка</td>
  </tr>
</table>

CSS

table {
  border: 1px solid #666;
  width: 100%;
  empty-cells: hide;
}
.show{
  empty-cells: show;
}
td, th {
  border: 1px solid #666;
  padding: 16px;
  text-align: center;
}
p{
  text-align: center;
  font-size: 20px;
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід