Можно сделать таблицу гибкой?

сейчас для того, чтобы было по 5 в ряд задана ширина 20%

а чтобы было по 2 в ряд - нужно задать 50%

по 3 - width: calc(100% / 3)

есть гибкий вариант?

table {
  width: 100%;
}

th, td {
  width: 20%;
  text-align: center;
  border: 1px solid red;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}
<table>
  <thead>
    <tr>
      <th>1</th>
      <th>2</th>
      <th>3</th>
      <th>4</th>
      <th>5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>35,5</td>
      <td>4</td>
      <td>34</td>
      <td>2.5</td>
      <td>22.5</td>
    </tr>
    <tr>
      <td>36</td>
      <td>4.5</td>
      <td>35</td>
      <td>2.5</td>
      <td>22.5</td>
    </tr>
  </tbody>
</table>


Ответы (1 шт):

Автор решения: Qwertiy

Если колонки должны быть одинаковой (или фиксированной, но не по контенту) ширины:

table, tr, td, th {
  width: 100%;
  border: 1px solid red;
  border-collapse: collapse;
  table-layout: fixed;
  text-align: center;
  margin: 1em 0;
}
<table>
  <thead>
    <tr><th>1<th>2<th>3<th>4<th>5</tr>
  </thead>
  <tbody>
    <tr><td>35,5<td>4<td>34<td>2.5<td>22.5</tr>
  </tbody>
</table>

<table>
  <thead>
    <tr><th>1<th>2<th>3<th>4</tr>
  </thead>
  <tbody>
    <tr><td>35,5<td>4<td>34<td>2.5</tr>
  </tbody>
</table>

<table>
  <thead>
    <tr><th>1<th>2<th>3</tr>
  </thead>
  <tbody>
    <tr><td>35,5<td>4<td>34</tr>
  </tbody>
</table>

<table>
  <thead>
    <tr><th>1<th>2</tr>
  </thead>
  <tbody>
    <tr><td>35,5<td>4</tr>
  </tbody>
</table>


<table>
  <thead>
    <tr><th>1</tr>
  </thead>
  <tbody>
    <tr><td>35,5</tr>
  </tbody>
</table>

→ Ссылка