Я хотел бы получить унифицированный внешний вид во всех моих табличных рядах. Когда вы посмотрите на мой пример ниже, вы увидите, что заметка в середине проходит более 4 строк, и это не так красиво.
Я надеялся ограничить все <td>
на 3 строки.
Если будет показано больше трех строк, тогда он должен вырезать содержимое с помощью ... [click for more]
и помещать содержимое внутри collapseable element, так что при нажатии на него будет отображаться весь контент.
Последнее не должно быть проблемой, но как ограничить контент только тремя строками? Должен ли я считать персонажей, чтобы принять решение? Есть ли лучшая стратегия? Я использую Django, кстати, но я счастлив использовать javascript, jquery или любую магию css, чтобы решить эту проблему.
Update:
Принятый ответ очень хорош. Однако это связано с предостережением, которое нелегко решить.
если у вас есть соседний td
, который уже проходит три строки, а текущий td - только две строки, мы получим бесконечный цикл while.
while($(this).innerHeight() / $(this).css('line-height').slice(0,-2) >= 3){ .. }
Так как $(this).innerHeight()
не может уменьшиться из-за соседней ячейки, удерживающей высоту выше. Я думаю, что если бы можно было получить css текущего td и скопировать его по содержимому полностью в отдельном поле, где соседние tds не могут вмешиваться, мы получим оптимальное решение.
Обновление 2:
Как упоминал Асад, решение состоит в том, чтобы поместить обертку div вокруг содержимого td
и установить класс на div
внутри td
, а не на td
. Он работает безупречно.