HTML / CSS Таблица / Строки - PullRequest
0 голосов
/ 24 апреля 2020

и извините за мой плохой Engli sh.
У меня на странице динамически создается какая-то таблица, в зависимости от того, к чему у пользователя есть доступ или нет.
Я создаю таблицу с 2 строками, которая является моей заголовок, и в гнезде для () я создаю все остальные таблицы.
Моя настройка Finall примерно такая:

<table class="table">
  <tr>
    <td class="col1">Header 1</td>
    <td class="col2">Header 2</td>
    <td class="col3">Header 3</td>
    <td class="col4">Header 4</td>
  </tr>
</table>
<table class="table">
  <tr>
    <td class="col1">column 1 for access 1</td>
    <td class="col2">column 2 for access 1</td>
    <td class="col3">column 3 for access 1</td>
    <td class="col4">column 4 for access 1</td>
  </tr>
</table>
<table class="table">
  <tr>
    <td class="col1">column 1 for access 2</td>
    <td class="col2">column 2 for access 2</td>
    <td class="col3">column 3 for access 2</td>
    <td class="col4">column 4 for access 2</td>
  </tr>
</table>
<table class="table">
  <tr>
    <td class="col1">column 1 for access 2</td>
    <td class="col2">column 2 for access 2</td>
    <td class="col3">column 3 for access 2</td>
    <td class="col4">column 4 for access 2</td>
  </tr>
</table>

Мой CCS

.tg {
  border-collapse: collapse;
  border-spacing: 0;
  border-color: #aabcfe;
  white-space: nowrap;
}
  .tg td {
    font-family: Arial, sans-serif;
    font-size: 12px;
    padding: 1px 1px;
    border-style: solid;
    border-width: 1px;
    overflow: visible;
    word-break: normal;
    border-color: #aabcfe;
    color: #669;
    background-color: #e8edff;
  }
  .tg th {
    font-family: Arial, sans-serif;
    font-size: 12px;
    font-weight: normal;
    padding: 1px 1px;
    border-style: solid;
    border-width: 1px;
    overflow: hidden;
    word-break: normal;
    border-color: #aabcfe;
    color: #039;
    background-color: #b9c9fe;
  }
    .tg .tg-column1{
      background-color: #e7ffe7;
      color: #000000;
      border-color: #000000;
      text-align: right;
      vertical-align: middle
    }
    .tg .tg-column2{
      font-weight: bold;
      color: #000000;
      border-color: #000000;
      text-align: center;
      vertical-align: middle;
      position: sticky;
      position: -webkit-sticky;
      top: -1px;
      will-change: transform
    }
    .tg .tg-column3{
      background-color: #e7ffe7;
      color: #000000;
      border-color: #000000;
      text-align: right;
      vertical-align: middle
    }
    .tg .tg-column4{
      font-weight: bold;
      color: #000000;
      border-color: #000000;
      text-align: center;
      vertical-align: middle;
      position: sticky;
      position: -webkit-sticky;
      top: -1px;
      will-change: transform
    }

ширина каждого столбца в каждой таблице различна.
Есть ли способ, например, для всей таблицы column1, например, иметь ширину, равную максимальной ширине всех таблиц?
Теперь я получаю что-то, изображенное ниже
enter image description here

Ответы [ 4 ]

0 голосов
/ 24 апреля 2020

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

Более простой способ сделать это, не устанавливая класс для каждого td отдельно, (при условии, что у вас одинаковое число s на каждом) использовать td:nth-child(1) и установить для него ширину. Это выбирает первый дочерний элемент каждого и устанавливает ширину для этого.

Если в первом столбце есть какие-либо заголовки таблицы, вам нужно установить ширину для тех, кто отдельно, используя тот же метод, но с помощью th:nth-child(1).

Еще один метод, который может быть полезен, если вы хотите чтобы указать ширину без использования n-го дочернего элемента, для нескольких столбцов в таблице это <colgroup>:

<colgroup>
<col class="1">
<col class="2">
<col class="3">
</colgroup>

Браузер интерпретирует первый дочерний элемент <colgroup> как первый столбец, второй - как второй колонка и пр. Теперь вы можете установить каждую ширину для каждого столбца (для таблиц, которые имеют много столбцов, это было бы полезно и более интуитивно понятно, чем nth-child). Однако не так много CSS свойств, которые могут применяться к <col> - я думаю, что на данный момент их всего 4 (border, background, width and visibility), поэтому вы не можете применять такие вещи, как text-align.

0 голосов
/ 24 апреля 2020

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

Если вы используете sh соответствие вертикальной границы ваших таблиц, вы можете установить атрибут width в значение fixed ( px, em, rem (в зависимости от размера шрифта root или родительского элемента)) единиц или относительных (%, vh, vw) единиц, чтобы они соответствовали / выравнивались по вертикали ,

Удачи!

0 голосов
/ 24 апреля 2020

вы можете использовать col1 имя класса в вашем коде, но в CSS вы используете .tg .tg-column1 изменить имя класса в CSS файле, возможно, это будет работать

0 голосов
/ 24 апреля 2020

Да, это возможно.

Вам не нужно JS или что-либо еще для достижения этого.

Просто убедитесь, что вы остаетесь в той же таблице. (Вы должны использовать thead и tbody в любом случае согласно HTML5)

<table class="table">
  <thead>
    <tr>
      <td class="col1">Header 1</td>
      <td class="col2">Header 2</td>
      <td class="col3">Header 3</td>
      <td class="col4">Header 4</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="col1">column 1 for access 1</td>
      <td class="col2">column 2 for access 1</td>
      <td class="col3">column 3 for access 1</td>
      <td class="col4">column 4 for access 1</td>
    </tr>
  </tbody>
  <tbody>
    <tr>
      <td class="col1">column 1 for access 2</td>
      <td class="col2">column 2 for access 2</td>
      <td class="col3">column 3 for access 2</td>
      <td class="col4">column 4 for access 2</td>
    </tr>
  </tbody>
  <tbdoy>
  <tr>
    <td class="col1">column 1 for access 2</td>
    <td class="col2">column 2 for access 2</td>
    <td class="col3">column 3 for access 2</td>
    <td class="col4">column 4 for access 2</td>
  </tr>
  </tbdoy>
</table>

"Это просто автоматически установит ширину самой широкой ячейки для всех ячеек."

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