Подтвердить что ты не робот

Прерывание слова CSS/прерывание строки на символах подчеркивания в дополнение к пробелам и дефисам

У меня есть куча очень длинных имен файлов, которые заставляют мое форматирование HTML переполняться. Все эти имена файлов используют символы подчеркивания вместо пробелов и легко ломаются/обертываются, если они являются пробелами. Вот так.

Here_is_an_example_of_a_really_long_filename_that_uses_underscores_instead_of_spaces.pdf

Есть ли способ сказать CSS для обработки символов подчеркивания в тексте, как если бы они были пробелами или дефисами, и, таким образом, обернуть/сломать на символах подчеркивания? Вот так.

Here_is_an_example_of_a_really_long_
file_name_that_uses_underscores_
instead_of_spaces.pdf

В моих целях я не могу использовать script для этого. Я также не хочу использовать трюк word-wrap: break-word, потому что это обычно не работает без указания ширины. Кроме того, он прерывается произвольно в середине слов.

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать тег <wbr> (http://www.quirksmode.org/oddsandends/wbr.html), который позволяет обойти браузер, если вы его разместите.

Итак, ваш HTML должен быть:

Here_<wbr>is_<wbr>an_<wbr>example_<wbr>of_<wbr>a_<wbr>really_<wbr>...

Вы можете добавить этот тег на серверной стороне, прежде чем вывести HTML.

Альтернативой является сущность &#8203;, которая является пространством нулевой ширины. Иногда это работает лучше в некоторых браузерах.

Ответ 3

Кажется, вы не можете использовать CSS для этой цели в настоящее время.

Но вы можете использовать JavaScript для автоматического добавления тегов <wbr>, например:

var arr = document.getElementsByClassName('filename');
for(var i = 0; i < arr.length; i++) {
  arr[i].innerHTML = arr[i].innerHTML.replace(/_/g, '_<wbr/>');
}
body { width: 250px; }
<a class="filename">Here_is_an_example_of_a_really_long_filename_that_uses_underscores_instead_of_spaces.pdf</a>

Ответ 4

Без использования JavaScript и <wbr> вы можете вставить <span> </span> (обратите внимание на пространство) со следующим CSS:

span{
    width: 0;
    overflow: hidden;
    display: inline-block;
}

Разметка:

Here_<span> </span>is_<span> </span>an_<span> </span>example...