Как установить гибкие th и tr в таблице ? использование начальной загрузки или чистого css?

#html #css

Вопрос:

У меня есть столик

 .table { 

} 
       th {
            color: $gray;
            font-weight: 500;
            border-top: none;
            border-bottom: none; 
        }
    
        tr:nth-child(odd){  
        background-color:rgba(238, 238, 238, 0.5);
      }


      tr {
        // max-height: 34px; 
        max-height: 34px;
        display: flex;
        align-items: center;
        flex-wrap: wrap; 
    }
    
        td {
        display: flex;
        align-items: center;
        max-height: 34px; 
        padding: .75rem 0 .75rem .75rem;
        border-top: none;
        font-weight: 500;
        
    } 
 <table class="table">
  <tr>
    <th> Id </th>
    <th>Company</th>
    <th>Contact</th> 
  </tr>
  <tr>
    <td>1 1long 1text 1long 1text 1long 1text need be flexible</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td> 
  </tr>
  <tr>
    <td>2</td>
    <td>Centro comercial Moctezuma long text long textlong textlong textlong text</td>
    <td>Francisco Chang</td> 
  </tr>
  <tr>
    <td>3</td>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td> 
  </tr> 
</table> 

Вы заметили проблему со столом? Я просто хочу, чтобы это было, если, например, мой идентификатор или любое другое поле требует большей ширины, чтобы быть гибким.

если в слове «Компания» одно слово имеет небольшую ширину, но если, например, компания имеет длину 200 символов, установите ширину всех строк, чтобы они соответствовали этим 200 символам.

Я намеренно разместил этот длинный текст, чтобы заметить разницу. Все это должно быть гибким.

Я хочу, чтобы таблицы остались, а не чтобы мне пришлось превращаться в дивов

Ответ №1:

Попробуйте этот загрузочный код! Это довольно просто, и он справляется со всем, что вам нужно.

 <!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container"> 
  <table class="table">

    <thead>
     <tr>
    <th> Id </th>
    <th>Company</th>
    <th>Contact</th> 
  </tr>
</thead>
<tbody>
  <tr>
    <td>1 1long 1text 1long 1text 1long 1text need be flexible</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td> 
  </tr>
  <tr>
    <td>2</td>
    <td>Centro comercial Moctezuma long text long textlong textlong textlong text</td>
    <td>Francisco Chang</td> 
  </tr>
  <tr>
    <td>3</td>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td> 
  </tr> 
    </tbody>
  </table>
</div>

</body>
</html> 

Комментарии:

1. но я хочу, чтобы мой идентификатор td или tr, если у меня мало символов, был небольшим. Точнее, если ему не нужно много места, не занимайте его

Ответ №2:

Если вы хотите использовать таблицу, вы не можете использовать display: flex; элементы таблицы. Собственное использование элементов таблицы display: table; . Добавьте дочерние div td элементы внутри, если вы хотите оформить их с помощью flexbox или запретить перенос текста.

        th {
            color: $gray;
            font-weight: 500;
            border-top: none;
            border-bottom: none; 
        }
    
        tr:nth-child(odd){  
        background-color:rgba(238, 238, 238, 0.5);
      }


      tr {
        // max-height: 34px; 
        max-height: 34px;
    }
    
        td div {
        display: flex;
        align-items: center;
        max-height: 34px; 
        padding: .75rem 0 .75rem .75rem;
        border-top: none;
        font-weight: 500;
    } 
 <table class="table">
  <tr>
    <th> Id </th>
    <th>Company</th>
    <th>Contact</th> 
  </tr>
  <tr>
    <td>1 1long 1text 1long 1text 1long 1text need be flexible</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td> 
  </tr>
  <tr>
    <td>2</td>
    <td><div>Centro comercial Moctezuma long text long textlong textlong textlong text</div></td>
    <td>Francisco Chang</td> 
  </tr>
  <tr>
    <td>3</td>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td> 
  </tr> 
</table> 

Комментарии:

1. Мария, но я хочу, чтобы мой идентификатор td или tr, если у него не так много символов, был маленьким. Точнее, если ему не нужно много места, не занимайте его

2. Ты хоть пробовал это сделать? jsfiddle.net/5L37zkc9 Таблицы автоматически сжимают столбцы до максимально возможной ширины

3. У меня здесь есть все, что нужно.. Мне нужно попробовать еще раз