Установка максимальной длины в <TD> - PullRequest
2 голосов
/ 11 июня 2009

У меня есть столбец, в котором некоторые пользователи не вводят пробелы (например: ................................. ........) и это растягивает мою колонку TD.

Есть ли способ заставить разрывы строк в html с простой опцией? Если нет, я думаю, что мне придется самому разбить линию, что было бы неоптимально, поскольку мне пришлось бы определять лучшие места для разрыва линии, и я не хочу этого делать.

Я ищу что-то, что будет работать в 3 основных браузерах (например, / firefox / safari)

Вот мой код:

<td valign="top">
    <br>
    <strong><?php echo $common->stripHtml($row['one_liner']); ?></strong>
    <br>
    <hr>
    <?php
        if (strlen($row['self_description']) > 240)
        {
            echo substr($common->stripHtml($row['self_description']), 0, 240)."... <a href='viewprofile.php?i=".$row['user_id']."'>more</a>";
        }
        else
        {
            echo $common->stripHtml($row['self_description']);
        }
    ?>
</td>

Ответы [ 7 ]

11 голосов
/ 11 июня 2009

Ячейка с фиксированной шириной в сочетании с сокрытием содержимого переполнения должна решить проблему

CSS:

table {
    table-layout:fixed;
}

table td {
    overflow:hidden;
}

Ориентация на этот HTML:

<!-- This width specification ought to be in the top-most <td> or <th>  -->
<td width="100" >...</td>
1 голос
/ 11 июня 2009

Хотя вы можете вручную добавлять разрывы строк в PHP, вы также можете использовать свойство CSS « overflow », чтобы определить, как ячейка должна отображать свои данные.

Если вы установите переполнение на «auto», в ячейке должна появиться полоса прокрутки, а если вы установите переполнение на «hidden», содержимое будет скрыто за пределами установленной вами ширины.

0 голосов
/ 11 июня 2009

Еще одним «исправлением» может быть использование Javascript. Когда возникает событие .blur () этого конкретного элемента ввода, вставляйте разрывы на каждом x-м символе или после каждого x-го слова. Лично я бы не назвал это «отличным» решением.

Опять же, я предполагаю, что у вас есть возможность отслеживать материалы, поступающие через ваш сайт. Если это так, то вы можете манипулировать данными с помощью PHP / C # - что было бы идеальным методом.

0 голосов
/ 11 июня 2009

Никакое свойство css не может разбивать строки без пробелов.

Комбинируя "width: xxx", "overflow: hidden" и "table-display: fixed", вы можете скрыть нежелательный контент в своих ячейках.

0 голосов
/ 11 июня 2009

Вы можете использовать свойство CSS overflow для ячейки таблицы, но это не приведет к разрыву строки.

Вы можете вставить немного

&shy;

сущностей, но поддержка браузера нестабильна.

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

0 голосов
/ 11 июня 2009

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

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

Я бы выбрал шрифт фиксированной ширины для отображения текста, а затем вставлял разрыв после фиксированного числа символов.

0 голосов
/ 11 июня 2009

Использовать ячейки фиксированной ширины?

<td valign="top" width="100px">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...