Есть ли html + css -существующий способ синхронизации динамических c значений ширины столбцов сетки между несколькими сетками? - PullRequest
0 голосов
/ 12 марта 2020

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

Employees
--------------------------------------------------------
| Name                          | Start Date           |
--------------------------------------------------------
| Bill                          | 10/22/1983           |
--------------------------------------------------------
| Jim                           | 04/14/2010           |
--------------------------------------------------------
| Jessica                       | 06/08/2002           |
--------------------------------------------------------

Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua.

Lunch Menu
--------------------------------------------------------
| Name                          | Price                |
--------------------------------------------------------
| Pizza Slice                   | $2.50                |
--------------------------------------------------------
| Pulled Pork Sandwich          | $5.99                |
--------------------------------------------------------
| Fried Chicken Dinner          | $7.99                |
--------------------------------------------------------

Я надеюсь найти решение только для html + css (s css), которое можно использовать повторно. Мой подход к этому пункту заключается в использовании единой сетки для содержимого документа ...

.grid-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-flow: row;
  grid-gap: 5px;
}

h2,
p {
  grid-column: 1/-1;
  margin: 10px 0;
}

.header {
  padding: 5px 10px;
  background-color: #ddd;
}

.record {
  padding: 5px 10px;
  background-color: #eee;
}
<div class="grid-content">
  <h2>Employees</h2>

  <div class="header">Name</div>
  <div class="header">Start Date</div>

  <div class="record">Bill</div>
  <div class="record">10/22/1983</div>

  <div class="record">Jim</div>
  <div class="record">04/14/2010</div>

  <div class="record">Jessica</div>
  <div class="record">06/08/2002</div>

  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>

  <h2>Lunch Menu</h2>

  <div class="header">Name</div>
  <div class="header">Price</div>

  <div class="record">Pizza Slice</div>
  <div class="record">$2.50</div>

  <div class="record">Pulled Pork Sandwich</div>
  <div class="record">$5.99</div>

  <div class="record">Fried Chicken Dinner</div>
  <div class="record">$7.99</div>
</div>

Это близко к тому, что я ищу, но с этим подходом есть несколько проблем ...

Во-первых, это предотвращает перекрытие полей. Например, если у меня есть два абзаца с полем 10px сверху и снизу, между ними будет разрыв 20px, что означает, что для содержимого в сетке требуется собственный набор правил стилей.

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

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

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

Использование реальных <table> вместо grid хорошо, я только что нашел сетки более гибкими. Что бы было фантазией c, если бы я мог иметь две независимые сетки, которые каким-то образом осведомлены о содержимом друг друга и соответственно изменяют размер своих столбцов.

Конечно, всегда есть возможность просто сообщить дизайнеру, "нет" если дело доходит до этого. (Пожав плечами)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...