Як я можу використовувати повернення перевезення у підказці HTML?


330

На даний момент я додаю багатослівні підказки на наш сайт, і мені хотілося б (не вдаючись до плагіна jQuery-модуля whiz-bang, я знаю, що їх багато!) Використовувати повернення каретки для форматування підказки.

Щоб додати підказку, я використовую titleатрибут. Я переглянув звичайні сайти та використав основний шаблон:

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

Я спробував замінити на ?:

  • <br />
  • &013; / &#13;
  • \r\n
  • Environment.NewLine (Я використовую C #)

Жоден із перерахованих вище не працює. Це можливо?


Це досить складно, але може бути рішення. Змініть усі пробіли у вашому заголовку на пробіли &nbsp;. Потім поставте пробіли там, де ви хочете, щоб розрив рядків. Можливо, вам також знадобиться додати &nbsp;пробіл символів перед пробілом (розривом рядка).
jumxozizi

Відповіді:


292

Ви так просто почнете бити себе ... просто натисніть Enter!

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

Firefox взагалі не відображатиме багаторядкові підказки - він замінить нові рядки нічим.


69
Ця відповідь застарів, Firefox робить дисплей нового рядка в заголовках зараз (я використовую V25). Він працює з \n, \u000Aі \x0A.
Хелсіон

1
@Halcyon, лише для уточнення для інших читачів, три вищезгадані коди, здається, не є HTML. Вони більше схожі на послідовності відхідних рядків мови C.
Сем

3
@ Сам, я не розумію, що ти маєш на увазі під цим. \x0A(байт) - код символів, який відповідає новому рядку. Те саме для \u000A(unicode). \nтакож є новим рядком.
Гельсіон

13
@Halcyon, я спробував вставити ці послідовності втечі в titleатрибут Firefox та Chrome, і вони просто були представлені буквально під підказкою. Згодом я зрозумів, що ви, ймовірно, використовуєте цей синтаксис як спосіб спілкування, які символи (а не уникнення послідовностей) слід використовувати. Мій коментар - це заощадити час для інших людей, попереджаючи їх не намагатися вводити ваші послідовності втечі у свій HTML, щоб вони не витрачали час, як я.
Сем

4
@Tarquin Вони не працюють у HTML, вони спеціально працюють у подвійних лапках PHP, тому що це особливість подвійних лапок PHP.
Brilliand

307

Остання специфікація дозволяє лінії подачі характер, так що простий розрив рядка всередині атрибута або об'єкта &#10;(зверніть увагу , що символи #і ;обов'язкові) справні.


4
це не підтримується Chrome, але для Firefox чудово!
Алаедін

5
Я спробував і те, &#10;і &#13;. &#13;не буде вшановувати призначені "розриви рядків" у хромованій версії 50.0.2661.94 (64-розрядна). &#10;добре працює в сучасних версіях chrome, firefox та opera (все для 64-розрядних Ubuntu) та Internet Explorer версії 11.0 та деяких змін у Windows.
Тасс

Це особливо корисно для мене, тому що я намагався зробити це в редакторі Wordpress.
ed1nh0

13
& # 10; прекрасно працює в IE, Firefox та Chrome. Дякую!
Даніель

Для хрому & # 013; ....... Приклад: title = "title1 & # 13; title2 & # 13; title3"
Малік Захід

75

Спробуйте символ 10. Він не працює у Firefox. :(

Текст відображається (якщо він взагалі є) у залежності від браузера. Невеликі підказки працюють у більшості браузерів. Тривалі підказки та переривання рядків працюють в IE та Safari (використовуйте &#10;або &#13;для нового нового рядка). Firefox та Opera не підтримують нові рядки. Firefox не підтримує довгі підказки.

http://modp.com/wiki/htmltitletooltips

Оновлення:

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

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


2
+1. Якщо ви вирішили використовувати плагін jQuery, для оптимальної доступності він повинен прочитати його вміст з атрибута заголовка та замінити деякий довільний невидимий символ для розриву рядків під час виконання.
Кент Фредрік

+1. Цікаві речі. Я все ще залишається проблемою, коли деякі UA-карти обрізають назву, коли вона з'являється - FF2, наскільки я пам'ятаю, але це менше питання в ці дні.
roborourke

3
Станом на січень 2015 року Firefox має підтримку використання &#13;в titleатрибуті , щоб вставити розрив рядка.
псевдосавант

Я не міг отримати перерви рядків для роботи в IE11 в елементі SVG <title>. Хтось мав більше успіхів у цьому? Спробувавши вище / нижче згадати char-коди, схоже, жоден не працює.
RemEmber

64

Перевірено це в IE, Chrome, Safari, Firefox (останні версії 2012-11-27):
&#13;

Працює у всіх них ...


Перший метод (розбиття рядків у коді) здається більш простим, але не піддається автоматичним форматуванням програм js-коду.
хоріату

@Camilo Martin, newline та linefeed однакові на всіх платформах. &#10;це Unix linefeed так само, як це Windows linefeed. Аналогічно &#13;є нова лінія для обох платформ. У специфікації визначає новий рядок (LF) напівкоксу , який, звичайно , &#10;на обох (всіх?) Платформ.
матовий

2
@matty Не впевнений, чи я вас розумію - правильне використання здається, що unix LF(який є звичайним стандартним підключенням ліній через протоколи та інструменти), CRвикористовувався лише старими Macs (та іншими незрозумілими платформами) і, здається, недоречний.
Каміло Мартін

Прошу вибачення за заплутаний вибір слова. Те, що я назвав linefeed (№10), насправді є новим рядком, хоча його часто називають LF. Те, що я назвав новим рядком (№13), - це справді повернення вагона. У будь-якому випадку, моя думка полягала в тому, що ці значення однакові на всіх платформах. Той факт, що Windows (використовуючи обидва ці символи для закінчення рядка) та mac (використовуючи символ "неправильний" для закінчення рядка), має бути неактуальним щодо того, який HTML-об’єкт повинен використовуватися в атрибуті заголовка. Специфікація каже &#10;, хоча, мабуть, &#13;працює і за багатьох обставин.
матовий

2
звичайний & # 13; не працює для chrome в Linux. Послідовність & # 13; & # 10; проте, однак.
Сем Уоткінс

51

Також варто згадати, якщо ви встановлюєте атрибут заголовка таким чином Javascript:

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

Це не спрацює. Ви повинні замінити цей ASCII десятковий 10 на шістнадцятковий ASCII A таким чином, як це уникнуто за допомогою Javascript. Подобається це:

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


@MaxNanasy Погодився, і вони еквівалентні ( \nозначає char код 10 все одно)
rvighne

29

Станом на Firefox 12, вони тепер підтримують розриви рядків за допомогою HTML-сутності каналу рядка: &#10;

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

Це працює в IE і є правильним згідно специфікації HTML5 для атрибута заголовка .


16

Якщо ви використовуєте 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

15

Як внесок у &#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>

Демо

введіть тут опис зображення


8

&#13; буде працювати у всіх основних браузерах (включений IE)


13
Ця відповідь застаріла; & # 13; також працює в Chrome та інших браузерах.
SaeX

7

Я знаю, що я спізнююсь на вечірку, але для тих, хто просто хоче, щоб це працювало, ось демонстрація: 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>

2
Найсучасніший відгук та чудово працює на Firefox. Дякую.
Marwan مروان

6

Я не вірю в це. Firefox 2 так чи інакше обрізає довгі заголовки посилань, і їх потрібно використовувати лише для передачі невеликої кількості довідкового тексту. Якщо вам потрібен додатковий текст пояснення, я б запропонував, що він належить до абзацу, пов’язаного із посиланням. Потім ви можете додати код підказки javascript для приховування цих абзаців і показувати їх як підказки під наведенням курсору. Це ваша найкраща ставка для того, щоб змусити його працювати на крос-браузерному ІМО.



6

У Chrome 16 та, можливо, більш ранніх версіях ви можете використовувати "\ n". Як сторонне позначення, "\ t" також працює


6

У нас була вимога, де нам потрібно було протестувати все це, ось що я хочу поділитися

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/>

Скрипка




4

Просто скористайтеся цим:

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

Ви можете додати новий рядок до заголовка, скориставшись цим &#x0a.


4

Просто використовуйте JavaScript. Потім сумісний з більшістю та старими браузерами. Використовуйте послідовність відходу \ n для нового рядка.

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

Яка версія Chrome? Це працює для мене, і я використовую Chrome.
Вельшбой

Насправді я використовую найсвіжішу версію Chrome, однак, оскільки я працював над SVG Elements, це не працювало, не в порядку.
NewPHPer

4

Це &#013;має спрацювати, якщо ви просто використовуєте простий атрибут заголовка.

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

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


3

З наявної інформації про доступність та використання підказок, що збільшують їх із застосуванням CR або розриву лінії, зрозуміло, що різні браузери не можуть / не домовляться про основи, показує, що вони не надто дбають про доступність.


2
Про дуже просте рішення для перехрещення налаштованих підказок браузера див. Kollermedia.at/archive/2008/03/24/easy-css-tooltip/…
Дейв

@DaveThis - це приємне посилання, проте розрив рядка в демонстрації відбувається через атрибут width
Мелсі

3

Відповідно до цієї статті на веб-сайті w3c :

CDATA - це послідовність символів із набору символів документа і може включати сукупності символів. Користувацькі агенти повинні інтерпретувати значення атрибутів так:

  • Замініть об'єкти символів символами,
  • Ігнорувати канали рядків,
  • Замініть кожну коробку повернення або вкладку одним пробілом.

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


1
Так, я знаю, що це не офіційно. Ви помиляєтеся, як би то не було. Це не означає, що вони не відображатимуться. Це означає, що в специфікації W3C не вказано, як вони повинні відображатися. Публікація не передбачає, що їх можна використовувати для заміни більш функціональних плагінів .... це було більше випадків, коли під час деградації можна використовувати будь-яке інше.
penderi

@ip: Я помиляюся в тому, що оновлені рекомендації w3c дозволяють браузерам розділити вміст навколо символу LF. Однак браузери зрештою реалізують цю поведінку.
Салман

2

Підказки для інструментів можуть бути створені вручну, і вони можуть включати форматування 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 щодо цього. Експериментуйте з наведеним вище кодом тут .


1

Синтаксис бритви

У випадку з ASP.NET MVC ви можете просто зберегти заголовок у вигляді змінної як використання, \r\nі він буде працювати.

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

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

0

зламати, але працює - (перевірено на хромі та мобільному пристрої)

просто не додайте пробілів до перерви, доки не порушиться - можливо, вам доведеться обмежити розмір підказки залежно від кількості вмісту, але для невеликих текстових повідомлень це працює:

&nbsp;&nbsp; etc

Перепробував усе вище, і це єдине, що працювало на мене -


0

Я намагався за допомогою "" відобразити текст заголовка в новому рядку, і це працює як шарм


0

Я на Firefox 68.7.0esr, і &#013;це не працює. Переривання ліній через все- <CR>таки спрацювало, тому я йду з цим, оскільки це просто і вперед. тобто

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

-1

використовувати data-html="true"і застосовувати <br>.


1
Це не частина специфікації. Повинен бути якийсь випадковий плагін підказки
TJ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.