2015-09-24 3 views
0

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

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

td { 
    max-width: 200px; 
} 

JSFiddle example.

В скрипичной приведенном выше примере, как сделать ячейку с «Title» и ячейки с «Храброе сердце» соответствовать высоте третьей ячейки в этой строке?

Подсказка: правильный ответ заключается не в том, чтобы жестко определить высоту первых двух ячеек, так как я понятия не имею, как долго может быть другая ячейка, когда она будет добавлена ​​позже.

EDIT

Я не могу использовать JavaScript как HTML никогда не упрется стороне ничего клиента. Он отображается, а затем передается в программу создания PDF.

ответ

0

Это не может быть лучшим ответом выполнения, или даже самый лаконичный, но он может начать вас в правильном пути (fiddle):

<div> 
<table> 
    <tbody> 
     <tr> 
      <th class="title">Title</th> 
      <th class="year">Release Year</th> 
      <th class="director">Director</th> 
     </tr> 
     <tr> 
      <td class="title">Braveheart</br>part 2</td> 
      <td class="year">1992?</td> 
      <td class="director">Mel Gibson?</td> 
     <tr> 
      <td class="title">Some movie with a ridiculously long title. I mean, like two paragraphs for a title, which is ridiculous of course but it proves my point.</td> 
      <td class="year">2015</td> 
      <td class="director">The Great Anton - Director of the year 2012</td> 
     </tr> 
    </tbody> 
</table> 
</div> 

$(document).ready(function(){ 

    function getMaxHeight(e){ 
     var maxHeight = Math.max.apply(null, $(e).map(function() 
      { 
      return $(this).height(); 
      }).get()); 
     return maxHeight; 
    } 


    $('tr').each(function(){ 
     $(this).find('.title').css("height", getMaxHeight('.title')); 
     $(this).find('.year').css("height", getMaxHeight('.year')); 
     $(this).find('.director').css("height", getMaxHeight('.director')); 
    }); 
}); 

Максимальная высота функция пришла из this SO answer.

+0

Я предполагаю, что я должен был упомянуть, что ответ должен был быть основан на HTML и CSS (отсюда и не тег javascript). Я не могу использовать javascript, так как это бритвенное представление, которое никогда не отображается на стороне клиента. Прямой HTML передается в библиотеку создания PDF, а затем отображается в формате PDF. Невозможно выполнить javascript. – Lefka

+0

ahhhh. да, это помогло бы :) Это, кажется, необычный макет (горизонтальная таблица) ... вы вынуждены использовать этот макет? Простой обычный макет таблицы выполнит то, что вы ищете: http://jsfiddle.net/Lsr1vy6v/ – deebs

+0

Нет, но идея состоит в том, чтобы свести к минимуму ненужный код. Я не знаю, сколько столбцов будет отображаться. Это может быть 1 или может быть 10. Поэтому я пошел по этому маршруту, поэтому тэг-теги и последующие тд-теги все инкапсулированы в цикле foreach. Затем он просто динамически создает то, что мне нужно. Это все равно можно было бы сделать с помощью традиционной таблицы, но в итоге у меня было бы множество циклов foreach вместо одного. – Lefka

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