Как я могу использовать возврат каретки во всплывающей подсказке HTML?

В настоящее время я добавляю подробные всплывающие подсказки на наш сайт и хотел бы (не прибегая к надстройке jQuery, я знаю, что их много!) Использовать возврат каретки для форматирования всплывающей подсказки.

Чтобы добавить подсказку, я использую атрибут title. Я просмотрел обычные сайты и использовал базовый шаблон:

<a title='Tool?Tip?On?New?Line'>link with tip</a>

Я пробовал заменить ? на:

  • <br />
  • &013; / &#13;
  • \r\n
  • Environment.NewLine (я использую C#)

Ничего из вышеперечисленного не работает. Является ли это возможным?

Это довольно сложно, но может быть обходной путь. Замените все пробелы в заголовке на неразрывные &nbsp;. Затем поместите пробелы там, где вы хотите, чтобы строки разрывались. Вам также может потребоваться добавить кучу символов &nbsp; перед пробелом (разрыв строки).

jumxozizi 25.11.2016 17:29
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
350
1
323 903
28
Перейти к ответу Данный вопрос помечен как решенный

Ответы 28

Попробуйте символ 10. Однако он не будет работать в Firefox. :(

The text is displayed (if at all) in a browser dependent manner. Small tooltips work on most browsers. Long tooltips and line breaking work in IE and Safari (use &#10; or &#13; for a new newline). Firefox and Opera do not support newlines. Firefox does not support long tooltips.

http://modp.com/wiki/htmltitletooltips

Обновлять:

По состоянию на январь 2015 года Firefox поддерживает использование &#13; для вставки разрыва строки в HTML-атрибут title. См. Пример фрагмента ниже.

<a href = "#" title = "Line 1&#13;Line 2&#13;Line 3">Hover for multi-line title</a>

+1. Если вы решите использовать подключаемый модуль jQuery, для оптимальной доступности он должен считывать его содержимое из атрибута title и заменять произвольный невидимый символ на разрыв строки во время выполнения.

Kent Fredric 11.12.2008 13:19

+1. Интересный материал. По-прежнему существует проблема, когда некоторые UA обрезают заголовок, когда он появляется - FF2, насколько я помню, но в наши дни это не такая уж проблема.

roborourke 11.12.2008 13:25

По состоянию на январь 2015 года Firefox поддерживает использование &#13; в атрибуте title для вставки разрыва строки.

pseudosavant 01.02.2015 04:38

Мне не удалось заставить работать разрывы строк в IE11 в элементе SVG <title>. Кто-нибудь добился большего успеха в этом? Пробовал указанные выше / ниже коды символов, похоже, ни один из них не работает.

RemEmber 22.06.2015 17:21

&#13; будет работать во всех основных браузерах (включая IE)

Этот ответ устарел; & # 13; также работает в Chrome и других браузерах.

SaeX 14.06.2014 20:45

Я не верю, что это так. Firefox 2 в любом случае обрезает длинные заголовки ссылок, и их действительно следует использовать только для передачи небольшого количества справочного текста. Если вам нужно больше текста объяснения, я бы посоветовал поместить его в абзац, связанный со ссылкой. Затем вы можете добавить javascript-код всплывающей подсказки, чтобы скрыть эти абзацы и показать их как всплывающие подсказки при наведении курсора. Это лучший способ заставить его работать в кросс-браузере IMO.

Ответ принят как подходящий

Это так просто, что вы себя накинете: просто нажмите Enter!

<a href = "#" title='Tool
Tip
On
New
Line'>link with tip</a>

@Halcyon, просто чтобы прояснить для других читателей, приведенные выше три кода, похоже, не являются HTML. Они больше похожи на escape-последовательности, производные от языка C.

Sam 07.01.2015 04:31

@Sam Я не понимаю, что вы имеете в виду. \x0A (байт) - это код символа, который соответствует новой строке. То же самое для \u000A (юникод). \n также является новой строкой.

Halcyon 07.01.2015 17:02

@Halcyon, я попытался вставить эти escape-последовательности в атрибут title в Firefox и Chrome, и они были буквально представлены во всплывающей подсказке. Впоследствии я понял, что вы, вероятно, использовали этот синтаксис как способ сообщить, какие символы (а не escape-последовательности) следует использовать. Мой комментарий предназначен для экономии времени других людей, предупреждая их не пытаться помещать ваши escape-последовательности в свой HTML, чтобы они не тратили время, как это сделал я.

Sam 07.01.2015 23:53

В Chrome (42) текст под первой строкой имеет другой (и для меня) менее читаемый шрифт.

skia.heliou 01.05.2015 21:21

Не уверен, относятся ли они к приведенным выше комментариям, но я обнаружил, что хотя \ n и \ r действительно работают, если задействован PHP, они будут работать только в строках, представленных внутри "", а не внутри "".

Tarquin 23.05.2015 03:42

@Tarquin Они не работают в HTML, они просто работают специально с двойными кавычками PHP, потому что это особенность двойных кавычек PHP.

Brilliand 26.05.2015 22:11

Итак, согласны ли мы, что нет возможности реализовать в html, кроме физического разделения новой строки в строке?

geotheory 20.12.2017 12:49

прогресс в отношении совместимости браузера Firefox? (Я не могу это проверить прямо сейчас)

ArchLinuxTux 12.04.2018 14:44

Просто люблю, когда решение такое простое :) Спасибо!

Don King 11.01.2019 20:54

последняя спецификация разрешает символ перевода строки, поэтому простой разрыв строки внутри атрибута или объекта &#10; (обратите внимание, что требуются символы # и ;).

он не поддерживается Chrome, но для Firefox это нормально!

Alaeddine 05.11.2015 12:35

Я пробовал и &#10;, и &#13;. &#13; не учитывает предполагаемые «разрывы строк» ​​в версии Chrome 50.0.2661.94 (64-бит). &#10; хорошо работает в текущих версиях Chrome, Firefox и Opera (все для 64-битной Ubuntu) и Internet Explorer версии 11.0 с некоторыми изменениями в Windows.

Tass 13.05.2016 00:50

Это особенно полезно для меня, потому что я пытался сделать это в редакторе сообщений Wordpress.

ed1nh0 05.05.2017 16:10

& # 10; прекрасно работает в IE, Firefox и Chrome. Спасибо!

Daniel 25.05.2017 19:14

Для Chrome & # 013; ....... Пример: title = "title1 & # 13; title2 & # 13; title3"

Malik Zahid 20.06.2019 08:26

&#xD; <----- Это текст, необходимый для вставки переноса возврата.

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

Для очень простого решения для кроссбраузерных настраиваемых всплывающих подсказок см. kollermedia.at/archive/2008/03/24/easy-css-tooltip/…

Dave 07.08.2011 05:14

@Dave Это хорошая ссылка, однако разрыв строки в демонстрации происходит из-за атрибута ширины

Melsi 19.10.2012 18:59

Согласно этому статья на сайте w3c:

CDATA is a sequence of characters from the document character set and may include character entities. User agents should interpret attribute values as follows:

  • Replace character entities with characters,
  • Ignore line feeds,
  • Replace each carriage return or tab with a single space.

Это означает, что (по крайней мере) CR и LF не будут работать внутри атрибута title. Я предлагаю вам использовать плагин всплывающей подсказки. Большинство этих плагинов позволяют отображать произвольный HTML-код в виде всплывающей подсказки к элементу.

Да, я знаю, что это неофициально. Вы ошибаетесь, однако. Это не значит, что они не будут отображаться. Это означает, что в спецификации W3C не указано, как они должны отображаться ... Суть поста заключалась не в том, чтобы предположить, что их можно использовать для замены более функциональных плагинов ... это был скорее случай того, чтобы во время деградации можно было использовать что-то еще.

penderi 12.09.2011 17:48

@ip: Я ошибаюсь в том, что обновленные рекомендации w3c предложить о том, что браузеры разделяют контент вокруг символа LF. Однако в конечном итоге браузеры будут реализовывать это поведение.

Salman A 14.09.2011 08:23

В Chrome 16 и, возможно, более ранних версиях вы можете использовать «\ n». Кстати, "\ t" тоже работает

Начиная с Firefox 12, они теперь поддерживают разрывы строк с помощью HTML-объекта перевода строки: &#10;.

<span title = "First line&#10;Second line">Test</span>

Это работает в IE и является правильным согласно спецификации HTML5 для атрибут заголовка.

Если вы используете jQuery:

$(td).attr("title", "One \n Two \n Three");

будет работать.

проверено в IE-9: работает.

Работает в MVC 3. Пример: @ Html.DropDownList ("RegId", null, "Select Region", new {title = "Выберите регион из раскрывающегося меню, \ nкоторый требуется для получения списка действительных имен контрактов") , @class = "form-control", onchange = "getContractNames (this)", style = "width: 200px;"})

Warren LaFrance 04.11.2015 22:12

Также стоит упомянуть, если вы устанавливаете атрибут title с помощью Javascript следующим образом:

divElement.setAttribute("title", "Line one&#10;Line two");

Это не сработает. Вы должны заменить десятичный ASCII 10 на шестнадцатеричный ASCII A так, как он был экранирован с помощью Javascript. Как это:

divElement.setAttribute("title", "Line one\x0ALine two");

@MaxNanasy Согласен, и они эквивалентны (\n в любом случае означает код символа 10)

rvighne 14.08.2016 08:28

Проверено в IE, Chrome, Safari, Firefox (последние версии 27.11.2012):
&#13;

Работает во всех ...

Первый способ (разрыв строк в коде) кажется более простым, но не подходит для программ автоформатирования js-кода.

horiatu 24.07.2015 18:05

@Camilo Martin, новая строка и перевод строки одинаковы на разных платформах. &#10; - это перевод строки в unix, как и в Windows. Точно так же &#13; - это новая линия для обеих платформ. спецификация определяет символ перевода строки (LF), который, конечно же, является &#10; на обеих (всех?) Платформах.

matty 29.08.2015 10:45

@matty Не уверен, что я вас понимаю - правильнее всего использовать unix LF (который является своего рода стандартным переводом строки для протоколов и инструментов), CR использовался только старыми Mac (и другими малоизвестными платформами) и кажется неуместным.

Camilo Martin 30.08.2015 12:26

Прошу прощения за непонятный выбор слов. То, что я назвал переводом строки (# 10), на самом деле является переводом строки, хотя его часто называют LF. То, что я назвал новой строкой (№13), на самом деле является возвратом каретки. В любом случае, я хотел сказать, что эти значения одинаковы для всех платформ. Тот факт, что windows (с использованием обоих этих символов в конце строки) и mac (с использованием «неправильного» символа для завершения строки) не имеет значения в отношении того, какой объект HTML должен использоваться в атрибуте title. В спецификации написано &#10;, хотя очевидно, что &#13; также работает во многих случаях.

matty 31.08.2015 09:23

Если кому-то еще нужно напомнить об этих кодах символов, как это сделал я, см. [Этот поток] (stackoverflow.com/q/1761051/1298086).

matty 31.08.2015 09:23

простой & # 13; не работает для хрома в Linux. Последовательность & # 13; & # 10; однако делает.

Sam Watkins 01.01.2016 15:32

Не повезло с IE11 с & # 13;

Adamy 04.07.2016 05:11

Просто используйте это:

<a title='Tool&#x0aTip&#x0aOn&#x0aNew&#x0aLine'>link with tip</a>

Вы можете добавить новую строку в заголовок с помощью этого &#x0a.

Я знаю, что опаздываю на вечеринку, но для тех, кто просто хочет увидеть, как это работает, вот демонстрация: http://jsfiddle.net/rzea/vsp6840b/3/

Используемый HTML:

<a href = "#" title = "First Line&#013;Second Line">Multiline Tooltip</a>
<br>
<br>
<a href = "#" title = "List:
  • List item here
  • Another list item here
  • Aaaand another list item, lol">Unordered list tooltip</a>

Самый последний ответ, отлично работает в Firefox. Спасибо.

Marwan مروان 29.01.2015 08:10

Просто используйте JavaScript. Затем совместим с большинством старых браузеров. Используйте escape-последовательность \ n для перевода строки.

   document.getElementById("ElementID").title = 'First Line text \n Second line text'

Какая версия Chrome? У меня это работает, и я использую Chrome.

Welshboy 16.11.2016 17:20

На самом деле я использую последнюю версию Chrome, однако, поскольку я работал над SVG Elements, это не сработало, это нормально.

NewPHPer 17.11.2016 15:08

Что касается тех, у кого &#10; не работал, вам нужно стилизовать элемент, на котором видны строки, как: white-space: pre-line;

Ссылка из этого ответа: https://stackoverflow.com/a/17172412/1460591

К чему нужно применить этот стиль? Название? как a[title]?

hhhhh 23.09.2016 13:03

В качестве вклада в решение &#013; мы также можем использовать &#009 для вкладок, если вам когда-нибудь понадобится сделать что-то подобное.

<button title = "My to-do list:&#013;&#009;-Item 2&#013;&#009;-Item 3&#013;&#009;-Item 4&#013;&#009;&#009;-Subitem 1">TEST</button>

Демо

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

document.getElementById("tooltip").setAttribute("title", "Tool\x0ATip\x0AOn\x0ANew\x0ALine")
<p title='Tool
Tip
On
New
Line'>Tooltip with <pre>
  new 
  line</pre> Works in all browsers</p>
<hr/>

<p title = "Tool&#13;Tip&#13;On&#13;New&#13;Line">Tooltip with <code>&amp;#13;</code> Not works Firefox browsers</p>
<hr/>

<p title='Tool&#10;Tip&#10;On&#10;New&#10;Line'>Tooltip with <code>&amp;#10;</code> Works in some browsers</p>
<hr/>

<p title='Tool&#x0aTip&#x0aOn&#x0aNew&#x0aLine'>Tooltip with <code>&amp;#xD;</code> May work in some browsers</p>
<hr/>

<p id='tooltip'>Tooltip with <code>document.getElementById("tooltip").setAttribute("title", "Tool\x0ATip\x0AOn\x0ANew\x0ALine")</code> May work in some browsers</p>
<hr/>


<p title = "List:
  • List item here
  • Another list item here
  • Aaaand another list item, lol">Tooltip with <code>• </code>Unordered list tooltip</p>
<hr/>


<p title='Tool\nTip\nOn\nNew\nLine'>Tooltip with <code>\n</code> May not work in modern browsers</p>
<hr/>

<p title='Tool\tTip\tOn\tNew\tLine'>Tooltip with <code>\t</code> May not work in modern browsers</p>
<hr/>

<p title='Tool&#013;Tip&#013;On&#013;New&#013;Line'>Tooltip with <code>&amp;#013;</code> Works in most browsers</p>
<hr/>

Скрипка

взломать, но работает - (проверено на хроме и мобильных устройствах)

просто добавьте пробелы без перерыва  , пока он не сломается - вам, возможно, придется ограничить размер всплывающей подсказки в зависимости от количества контента, но для небольших текстовых сообщений это работает:

&nbsp;&nbsp; etc

Пробовал все, что описано выше, и это единственное, что у меня сработало -

Синтаксис Razor

В случае ASP.NET MVC вы можете просто сохранить заголовок как переменную, используя \r\n, и он будет работать.

@{ 
    var logTooltip = "Sunday\r\nMonday\r\netc.";
}

<h3 title = "@logTooltip">Logs</h3>

Этот &#013; должен работать, если вы просто используете простой атрибут заголовка.

во всплывающих окнах начальной загрузки просто используйте data-html = "true" и используйте html в атрибуте data-content.

<div title = "Hello &#013;World">hover here</div>

Более красивые всплывающие подсказки могут быть созданы вручную и могут включать форматирование HTML.

<!DOCTYPE html>
<html>
<style>
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black;
}

.tooltip .tooltiptext {
    visibility: hidden;
    width: 120px;
    background-color: #555;
    color: #fff;
    text-align: center;
    border-radius: 6px;
    padding: 5px 0;
    position: absolute;
    z-index: 1;
    bottom: 125%;
    left: 50%;
    margin-left: -60px;
    opacity: 0;
    transition: opacity 0.3s;
}

.tooltip .tooltiptext::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
    visibility: visible;
    opacity: 1;
}
</style>
<body style = "text-align:center;">

<h2>Tooltip</h2>
<p>Move the mouse <a href = "#" title = "some text
more&#13;&#10;and then some">over</a> the text below:</p>

<div class = "tooltip">Hover over me
<span class = "tooltiptext">Tooltip text
some <b>more</b><br/>
<i>and</i> more</span>
</div>

<div class = "tooltip">Each tooltip is independent
<span class = "tooltiptext">Other tooltip text
some more<br/>
and more</span>
</div>

</body>
</html>

Это взято из сообщение w3schools по этому поводу. Поэкспериментируйте с приведенным выше кодом здесь.

используйте data-html = "true" и примените <br>.

Это не входит в спецификацию. Должен быть какой-то случайный плагин всплывающей подсказки

T J 12.12.2018 17:21

Я пробовал с " "для отображения текста заголовка в новой строке, и это работает как шарм

В Chrome 79 &#13; больше не работает.

Мне удалось:

&#13;&#10;

Это работает во всех основных браузерах.

Я использую firefox 68.7.0esr, и &#013; не работает. Прерывание строк с помощью <CR> действительно сработало, поэтому я буду придерживаться этого, поскольку он прост и прямолинеен. т.е.

<option title = "Constraint PSC/SCS/Activity
Definition Constraint Checker
Database Start Notifier">CnCk

Решение «просто нажмите Enter» здесь не сработало, поэтому старый добрый vanilla js кажется довольно эффективным и чистым способом.

function customTitle(event, textHeader, text){
    let eventOrigin = event.target || event.srcElement;
    eventOrigin.title = textHeader + '\n\n' + text;
}

И на элементе onmouseover

onmouseover = "customTitle(event, 'Some Caput', 'Some more or less complete description');"

Вуаля! Работает на chrome и firefox (что не исключает других, просто не проверял).

Другие вопросы по теме