Стилизация таблиц вокруг колонн - PullRequest
0 голосов
/ 26 сентября 2018

Goal

Я пытаюсь спроектировать таблицу так, чтобы она получилась как на картинке.Мне нужно окружить 2 последние колонки чем-то, чтобы получить этот эффект.Однако я не могу найти что-либо в Google или в стеке.Это возможно даже с HTML / CSS?Или мне нужно создать оверлей с CSS и просто расположить его над 2 последними столбцами?

<table class="promo-table">
  <th>Product</th>
  <th>Modellen</th>
  <th>Referentie</th>
  <th>TariefPrijs 2018</th>
  <th class="promo">Promoprijs</th>

  <tr class="first-promo">
    <td>Set remblokken, vooras</td>
    <td>117, 176, 246</td>
    <td>A 000 420 29 02</td>
    <td>€75,81</td>
    <td class="promo">€38,70</td>
  </tr>

  <tr>
    <td>Set remblokken, vooras</td>
    <td>117, 176, 246</td>
    <td>A 000 420 29 02</td>
    <td>€75,81</td>
    <td class="promo">€38,70</td>
  </tr>

  <tr>
    <td>Set remblokken, vooras</td>
    <td>117, 176, 246</td>
    <td>A 000 420 29 02</td>
    <td>€75,81</td>
    <td class="promo">€38,70</td>
  </tr>

</table>

1 Ответ

0 голосов
/ 26 сентября 2018

Один из подходов состоит в том, чтобы смоделировать это поле с установкой границ для соответствующих ячеек.Заголовок может быть создан с большей верхней границей и псевдоэлементом ::before.

. Этот подход работает только в том случае, если вы установите border-collapse: collapse; на своей таблице, в противном случае между границами ячеек будут пробелы..

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

table {
  border-collapse: collapse;
}

th,
td {
  padding: 5px 10px;
  margin: 0;
}

table tr td:nth-child(4),
table tr th:nth-child(4) {
  border-left: 2px solid #17a4e4;
}

table tr td:nth-child(5),
table tr th:nth-child(5) {
  border-right: 2px solid #17a4e4;
}

table tr th {
  position: relative;
  border-top: 25px solid transparent;
}

table tr th:nth-child(4),
table tr th:nth-child(5) {
  border-top: 30px solid #17a4e4;
}

table tr:last-child td:nth-child(4),
table tr:last-child td:nth-child(5) {
  border-bottom: 2px solid #17a4e4;
}

table tr th:nth-child(4)::before {
  content: "Aanbieding";
  text-transform: uppercase;
  color: white;
  position: absolute;
  top: -23px;
  left: 50%;
}
<table class="promo-table">
  <tr>
    <th>Product</th>
    <th>Modellen</th>
    <th>Referentie</th>
    <th>TariefPrijs 2018</th>
    <th class="promo">Promoprijs</th>
  </tr>
  <tr class="first-promo">
    <td>Set remblokken, vooras</td>
    <td>117, 176, 246</td>
    <td>A 000 420 29 02</td>
    <td>€75,81</td>
    <td class="promo">€38,70</td>
  </tr>
  <tr>
    <td>Set remblokken, vooras</td>
    <td>117, 176, 246</td>
    <td>A 000 420 29 02</td>
    <td>€75,81</td>
    <td class="promo">€38,70</td>
  </tr>
  <tr>
    <td>Set remblokken, vooras</td>
    <td>117, 176, 246</td>
    <td>A 000 420 29 02</td>
    <td>€75,81</td>
    <td class="promo">€38,70</td>
  </tr>
</table>
...