2016-03-29 2 views
1

Как добиться результата, как на картинке ниже, с помощью CSS/HTML?Как сделать полную ширину строк при разном подсчете столбцов

table

Как вы видите первые 2 строки имеют 2 колонки, 3-4 строки имеют 3 колонки, 5-6 строк должна быть полной ширины. Проблема в том, что я не могу получить разную ширину для разных строк. Должен ли я добавить класс для каждого td и указать его ширину вручную? Может быть, есть другой способ? Я предоставил упрощенную выборку, поскольку реальность в таблице содержит более 150 полей.

Здесь я создал JS FIDDLE также вижу структуру таблицы.

<table class="tbl"> 

<tr> 
     <th>UserID </th> 
     <th>FirstName </th>    
     <th>LastName </th>   
     <th>Picture </th> 
    </tr> 
    <tr> 
     <td>UserID</td> 
     <td>FirstName</td>   
     <td>LastName</td>   
     <td>Picture</td>     
    </tr> 
    <tr> 
     <th>Rank </th>    
     <th>RankApplied </th> 
     <th>DateApplied </th> 
     <th>DateAvailability </th> 
     <th>VesselsType </th> 
    </tr> 
    <tr> 
     <td>Rank</td>    
     <td>RankApplied</td> 
     <td>DateAvailability</td> 
     <td>VesselsType</td> 
    </tr> 
    <tr> 
     <th>DOB </th>    
     <th>POB </th>    
     <th>Nationality </th>  
     <th>English </th> 
    </tr> 
    <tr> 
     <td>DOB</td>     
     <td>POB</td>     
     <td>Nationality</td>   
     <td>English</td> 
    </tr> 
    .... 
+0

Это сказано ... это не похоже на один стол ... больше похоже на множество мини-столов, уложенных один за другим. –

+0

@Paulie_D Я не знаю. Если в этом случае лучше всего использовать таблицы. Мне нужно каким-то образом создать такую ​​структуру ... – Infinity

+0

Ну, это зависит от вас ... Если это табличные данные (и, похоже, это так), таблица имеет смысл ... но каждый набор строк может быть их собственный стол .... и вы можете выложить, как хотите. –

ответ

2

Возможно с несколькими методами. Лично я бы выбрал flexbox стиль.

С flex: 1 1 auto; для элементов сетки они растут и сжимаются, как вы хотите.

Я положил быстрый пример для этой схемы на fiddle

Я использую там display: flex даже для тела, но только для центрирования отверстия сетки.

Обновление: Я обновил ссылку на скрипку для более «динамического» макета.

+0

Благодарим за ответ, но если текст длинный, ширина строк не увеличивается, а значения (данные) различаются по длине, чем заголовки - ширина не совпадает. Обновлен JS Fiddle https://jsfiddle.net/mqpwgvoe/2/ – Infinity

+0

да. стиль сетки должен иметь значение «flex: 1 1 0;». И стиль сетки-столбца - значение «flex: 1 0 auto;» для роста. Я обновил ссылку на скрипку выше. Кстати, сетка в этом примере всегда 50% тела, если вы хотите изменить это, просто измените значение flex в стиле сетки или вообще не используйте flexbox (для этого стиля) и используйте фиксированную ширину для пример ... – michaPau

+0

В явном браузере Internet Explorer требуется единица для базового значения flex: 'flex: 1 1 0px;'. Я заново обновил ссылку на скрипку. – michaPau

Смежные вопросы