2013-04-05 3 views
29

Я хочу, чтобы всегда был невидимым символ прерывания строки, который работает с стилем CSS word-wrap: break-word;.Необязательный прерывистый объект HTML, который всегда невидим.

Вот некоторые особенности. Моя цель - разделить длинные ссылки в разумных местах. Эти персонажи являются хорошим местом для начала: -, ., _, /, \. Это не Rails-конкретный вопрос, но я хотел бы поделиться какой-то код, я использую в настоящее время:

module ApplicationHelper 
    def with_optional_line_breaks(text) 
    text.gsub(%r{([-._/\\])}, '\1­') 
    end 
end 

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


+0

В этом случае не работает тэг
? –

+0

@Christopher: '
' не является необязательным перерывом строки –

+0

Этот ответ может помочь. Не характер, а использование пробелов. http://stackoverflow.com/questions/5392853/html-css-denoting-a-preferred-place-for-a-line-break – Unrelated

ответ

47

​ - объект HTML для символа юникода, называемого пространством нулевой ширины (ZWSP).

«В HTML-страниц, это пространство может быть использовано в качестве потенциального разрыва строки в длинных словах как альтернатива <wbr> тега.» - Zero-width space - Wikipedia

<wbr> тег также работает, как уже упоминалось от Aaron's answer. Я думаю, что я предпочитаю этот объект HTML над тегом, потому что сущность кажется более простой: unicode обрабатывает ее, а не веб-браузер.

+2

Юникод обрабатывает его, но веб-браузеру не требуется соответствовать стандарту Unicode или поддерживать этот конкретный символ. Это сложная проблема, но, как правило, ZWSP работает только с довольно старыми браузерами, тогда как '' имеет странности в новых браузерах; см. http://www.cs.tut.fi/~jkorpela/html/nobr.html –

+1

@ Давид, а как насчет невидимого разделителя? См. Http://www.fileformat.info/info/unicode/char/2063/index.htm – Pacerier

+0

@Pacerier Представляется, что это предназначено для математических пробелов, учитывая контекст http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:subhead=Invisible%20operators:]. Из http://www.fileformat.info/info/unicode/char/2063/index.htm: «Оператор смежности, указывающий, что смежные математические символы образуют список, например, когда видимая запятая не используется между несколькими индексами». –

4

<wbr> выглядит, как он делает то, что вы хотите, но это выглядит как поддержка для него, и &shy; по этому вопросу, является very inconsistent. К сожалению, не может быть особо хорошего способа сделать то, что вы хотите.

+2

Спасибо. Примечание. Утверждение о том, что поддержка браузера непоследовательна, относится к 2008 году. В моей системе современные браузеры (Firefox, Safari, Chrome) делают правильные действия с ''. Я ожидаю, что они также будут работать для других методов разрыва слов/строк. Полный отчет можно найти на странице [Мягкий дефис (SHY) - сложная проблема?] (Http://www.cs.tut.fi/~jkorpela/shy.html) –

+0

Вот ответ, содержащий хороший обзор поддержки из слов-переносов/-разрушающих/-приложений: https://stackoverflow.com/a/28672471/3439786 Кроме того, есть страница _caniuse_: http://caniuse.com/#feat=wbr-element – Dennis98

+0

Одно из преимуществ из '' над пространством нулевой ширины. Объект Unicode состоит в том, что если строка, которую вы хотите разбить, является URL-адресом, который может быть скопирован из браузера (например, при предоставлении академической ссылки на веб-страницу, которая не является ссылкой) объект Unicode копируется (по крайней мере, в MacOS), и полученный URL-адрес выглядит корректно в браузере, но прерывается при попытке получить к нему доступ. '' не имеет этой проблемы. – theJBRU

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