Làm cách nào tôi có thể sử dụng trả lại vận chuyển trong chú giải công cụ HTML?


330

Tôi hiện đang thêm các chú giải công cụ dài dòng vào trang web của chúng tôi và tôi muốn (không cần phải dùng đến plugin jQuery whiz-bang, tôi biết có rất nhiều!) Để sử dụng trả về vận chuyển để định dạng chú giải công cụ.

Để thêm mẹo tôi đang sử dụng titlethuộc tính. Tôi đã xem xét các trang web thông thường và sử dụng mẫu cơ bản của:

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

Tôi đã thử thay thế ?bằng:

  • <br />
  • &013; / &#13;
  • \r\n
  • Environment.NewLine (Tôi đang sử dụng C #)

Không có công trình nào ở trên. Có thể không?


Nó khá khó khăn, nhưng có thể có một cách giải quyết. Thay đổi tất cả các khoảng trắng trong tiêu đề của bạn thành không gian không phá vỡ &nbsp;. Sau đó đặt khoảng trắng nơi bạn muốn ngắt dòng. Bạn cũng có thể cần thêm một loạt các &nbsp;ký tự trước dấu cách của bạn (ngắt dòng).
jumxozizi

Câu trả lời:


291

Thật đơn giản, bạn sẽ tự đá mình ... chỉ cần nhấn enter!

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

Mặc dù vậy, Firefox sẽ không hiển thị các chú giải công cụ đa dòng - nó sẽ thay thế các dòng mới bằng không có gì.


68
Câu trả lời này đã lỗi thời, Firefox hiện hiển thị các dòng mới trong các tiêu đề (Tôi đang sử dụng v25). Nó hoạt động với \n, \u000A\x0A.
Halcyon

1
@Halcyon, chỉ để làm rõ cho những người đọc khác, ba mã trên dường như không phải là HTML. Chúng trông giống như các chuỗi thoát chuỗi ngôn ngữ có nguồn gốc C.
Sam

3
@Sam Tôi không hiểu ý của bạn là gì. \x0A(byte) là mã ký tự tương ứng với một dòng mới. Tương tự cho \u000A(unicode). \ncũng là dòng mới.
Halcyon

13
@Halcyon, tôi đã thử chèn các chuỗi thoát đó vào một titlethuộc tính trong Firefox và Chrome và chúng chỉ được trình bày theo nghĩa đen trong tooltip. Sau đó, tôi nhận ra rằng bạn có thể đang sử dụng cú pháp đó như một cách để truyền đạt các ký tự (không phải các chuỗi thoát) nên được sử dụng. Nhận xét của tôi là để tiết kiệm thời gian của người khác bằng cách cảnh báo họ đừng cố gắng đưa các chuỗi thoát của bạn vào HTML của họ để họ không lãng phí thời gian như tôi đã làm.
Sam

4
@Tarquin Họ không hoạt động trong HTML, họ chỉ hoạt động cụ thể trong dấu ngoặc kép của PHP vì đó là một tính năng của dấu ngoặc kép của PHP.
Brilliand

307

Đặc tả kỹ thuật mới nhất cho phép ký tự nguồn cấp dữ liệu, do đó, ngắt dòng đơn giản bên trong thuộc tính hoặc thực thể &#10;(lưu ý rằng các ký tự #;được yêu cầu) là OK.


4
nó không được Chrome hỗ trợ nhưng đối với Firefox thì tốt!
Alaeddine

5
Tôi đã thử cả hai &#10;&#13;. &#13;sẽ không tôn trọng "ngắt dòng" dự định trong phiên bản chrome 50.0.2661.94 (64-bit). &#10;đang hoạt động tốt trong các phiên bản hiện tại của chrome, firefox và opera (tất cả cho Ubuntu 64 bit) và internet explorer phiên bản 11.0 và một số thay đổi trên windows.
Tass

Điều này đặc biệt hữu ích cho tôi vì tôi đã cố gắng làm điều đó trên trình chỉnh sửa bài đăng Wordpress.
ed1nh0

13
& # 10; hoạt động tuyệt vời trong IE, Firefox và Chrome. Cảm ơn!
Daniel

Dành cho chrome & # 013; ....... Ví dụ: title = "title1 & # 13; title2 & # 13; title3"
Malik Zahid

75

Hãy thử ký tự 10. Nó sẽ không hoạt động trong Firefox. :

Văn bản được hiển thị (nếu có) theo cách phụ thuộc vào trình duyệt. Chú giải công cụ nhỏ hoạt động trên hầu hết các trình duyệt. Chú giải công cụ dài và ngắt dòng hoạt động trong IE và Safari (sử dụng &#10;hoặc &#13;cho một dòng mới). Firefox và Opera không hỗ trợ các dòng mới. Firefox không hỗ trợ các chú giải công cụ dài.

http://modp.com/wiki/htmltitletooltips

Cập nhật:

Kể từ tháng 1 năm 2015, Firefox không hỗ trợ sử dụng &#13;để chèn ngắt dòng trong titlethuộc tính HTML . Xem ví dụ đoạn trích dưới đây.

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


2
+1. Nếu bạn quyết định sử dụng một plugin jQuery, để có khả năng truy cập tối ưu, nó nên đọc nội dung của nó từ thuộc tính tiêu đề và thay thế một số ký tự vô hình tùy ý để ngắt dòng khi chạy.
Kent Fredric

+1. Công cụ thú vị. Vẫn còn vấn đề về một số UAs cắt xén tiêu đề khi nó bật lên - FF2 khi tôi nhớ lại nhưng đó không phải là vấn đề ngày nay.
roborourke

3
Kể từ tháng 1 năm 2015, Firefox không hỗ trợ sử dụng &#13;trong một titlethuộc tính để chèn ngắt dòng.
pseudosavant

Tôi không thể ngắt dòng để làm việc trong IE11 trong phần tử SVG <title>. Có ai có nhiều thành công hơn với điều đó? Đã thử các mã trên / dưới đây đề cập đến mã char, dường như không có gì hoạt động.
RemEmber

64

Đã thử nghiệm điều này trong IE, Chrome, Safari, Firefox (phiên bản mới nhất 2012-11-27):
&#13;

Hoạt động trong tất cả chúng ...


Phương thức đầu tiên (ngắt dòng trong mã) có vẻ đơn giản hơn, nhưng không phù hợp với các chương trình tự động định dạng mã js.
horiatu

@Camilo Martin, dòng mới và linefeed giống nhau trên các nền tảng. &#10;là nguồn cấp dữ liệu unix giống như nguồn cấp của cửa sổ. Tương tự, &#13;là dòng mới cho cả hai nền tảng. Thông số kỹ thuật chỉ định char linefeed (LF) tất nhiên &#10;trên cả hai nền tảng (tất cả?).
matty

2
@matty Không chắc chắn nếu tôi hiểu bạn - điều chính xác để sử dụng có vẻ như unix LF(là nguồn cấp dữ liệu tiêu chuẩn trên các giao thức và công cụ), CRchỉ được sử dụng bởi các máy Mac cũ (và các nền tảng tối nghĩa khác) và dường như không phù hợp.
Camilo Martin

Tôi xin lỗi vì sự lựa chọn từ khó hiểu của tôi. Cái mà tôi gọi là linefeed (# 10) thực sự là một dòng mới, mặc dù thường được gọi là LF. Những gì tôi gọi là một dòng mới (# 13) thực sự là một sự trở lại vận chuyển. Trong mọi trường hợp, quan điểm của tôi là những giá trị đó giống nhau trên tất cả các nền tảng. Thực tế là các cửa sổ (sử dụng cả hai ký tự này để kết thúc một dòng) và mac (sử dụng ký tự "sai" để kết thúc một dòng) sẽ không liên quan đến việc sử dụng thực thể HTML nào trong thuộc tính tiêu đề. Thông số kỹ thuật nói &#10;, mặc dù rõ ràng cũng &#13;hoạt động trong nhiều trường hợp.
matty

2
đồng bằng & # 13; không hoạt động cho chrome trên Linux. Trình tự & # 13; & # 10; không, tuy nhiên.
Sam Watkins

51

Cũng đáng đề cập, nếu bạn đang đặt thuộc tính tiêu đề bằng Javascript như thế này:

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

Nó sẽ không hoạt động. Bạn phải thay thế số thập phân 10 của ASCII thành thập lục phân A ASCII theo cách nó được thoát bằng Javascript. Như thế này:

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


@MaxNanasy Đồng ý và chúng tương đương ( \ndù sao cũng là mã char 10)
rvighne

29

Kể từ Firefox 12, giờ đây họ hỗ trợ ngắt dòng bằng cách sử dụng thực thể HTML của nguồn cấp dữ liệu: &#10;

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

Điều này hoạt động trong IE và là chính xác theo thông số HTML5 cho thuộc tính tiêu đề .


16

Nếu bạn đang sử dụng jQuery:

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

sẽ làm việc.

đã thử nghiệm trong IE-9: đang hoạt động.


Hoạt động trong MVC 3 Ví dụ: @ Html.DropDownList ("RegId", null, "Chọn vùng", new {title = "Chọn một vùng từ menu thả xuống, \ nwhich được yêu cầu để có danh sách tên hợp đồng hợp lệ" , @group = "điều khiển biểu mẫu", onchange = "getContractNames (this)", style = "width: 200px;"})
Warren LaFrance

15

Để đóng góp cho &#013;giải pháp, chúng tôi cũng có thể sử dụng &#009cho các tab nếu bạn cần làm điều gì đó như thế này.

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

Bản giới thiệu

nhập mô tả hình ảnh ở đây


8

&#13; sẽ hoạt động trên tất cả các trình duyệt chuyên ngành (bao gồm IE)


13
Câu trả lời này đã lỗi thời; & # 13; cũng hoạt động trong Chrome và các trình duyệt khác.
SaeX

7

Tôi biết tôi đến bữa tiệc muộn, nhưng với những người chỉ muốn xem hoạt động này, đây là bản demo: http://jsfiddle.net/rzea/vsp6840b/3/

HTML được sử dụng:

<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
Phản hồi cập nhật nhất và hoạt động tốt trên Firefox. Cảm ơn.
Marwan مروان

6

Tôi không tin đó là. Dù sao thì Firefox 2 cũng có các tiêu đề liên kết dài và chúng thực sự chỉ nên được sử dụng để truyền tải một lượng nhỏ văn bản trợ giúp. Nếu bạn cần thêm văn bản giải thích, tôi sẽ đề nghị rằng nó thuộc về một đoạn liên kết với liên kết. Sau đó, bạn có thể thêm mã javascript của tooltip để ẩn các đoạn đó và hiển thị chúng dưới dạng chú giải công cụ khi di chuột. Đó là đặt cược tốt nhất của bạn để làm cho nó hoạt động IMO trên nhiều trình duyệt.


6

&#xD; <----- Đây là văn bản cần thiết để chèn Carry Return.


1
Hoạt động trên tất cả các trình duyệt :)
MonoThreaded

6

Trên Chrome 16 và có thể các phiên bản cũ hơn, bạn có thể sử dụng "\ n". Là một sidenote, "\ t" cũng hoạt động


6

Chúng tôi có một yêu cầu cần kiểm tra tất cả những điều này, đây là những gì tôi muốn chia sẻ

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

Vĩ cầm


6

Trên Chrome 79, &#13;không hoạt động nữa.

Tôi đã thành công với:

&#13;&#10;

Điều này hoạt động trong tất cả các trình duyệt chính.


5

Đối với những người &#10;không làm việc, bạn phải tạo kiểu cho thành phần mà các dòng được hiển thị trong:white-space: pre-line;

Được tham khảo từ Câu trả lời này: https://stackoverflow.com/a/17172412/1460591


1
Phong cách này cần được áp dụng để làm gì? Tiêu đề? như thế a[title]nào
Mohammed Zameer

4

Chỉ cần sử dụng này:

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

Bạn có thể thêm dòng mới vào tiêu đề bằng cách sử dụng này &#x0a.


4

Chỉ cần sử dụng JavaScript. Sau đó tương thích với hầu hết các trình duyệt cũ hơn. Sử dụng chuỗi thoát \ n cho dòng mới.

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

Phiên bản Chrome nào? Nó hoạt động cho tôi và tôi đang sử dụng Chrome.
Welshboy

Thực tế tôi đang sử dụng phiên bản Chrome mới nhất, tuy nhiên, vì tôi đang làm việc trên SVG Elements, nó không hoạt động, không ổn.
NewPHPer

4

Điều này &#013;sẽ hoạt động nếu bạn chỉ sử dụng một thuộc tính tiêu đề đơn giản.

trên bootstrap popovers, chỉ cần sử dụng data-html="true" và sử dụng html trong data-contentthuộc tính.

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


3

Từ thông tin có sẵn về khả năng truy cập và việc sử dụng chú giải công cụ làm cho chúng lớn hơn khi sử dụng CR hoặc ngắt dòng được đánh giá cao, thực tế là các trình duyệt khác nhau không thể / sẽ không đồng ý về những điều cơ bản cho thấy rằng họ không quan tâm nhiều đến khả năng truy cập.


2
Để biết một giải pháp rất dễ dàng để vượt qua các công cụ tùy chỉnh trình duyệt, hãy xem kollermedia.at/archive/2008/03/24/easy-css-tooltip/ Kẻ
Dave

@Dave Đây là một liên kết đẹp, tuy nhiên việc ngắt dòng trong bản demo xảy ra do thuộc tính width
Melsi

3

Theo bài viết này trên trang web w3c :

CDATA là một chuỗi các ký tự từ bộ ký tự tài liệu và có thể bao gồm các thực thể ký tự. Tác nhân người dùng nên diễn giải các giá trị thuộc tính như sau:

  • Thay thế các thực thể nhân vật bằng các ký tự,
  • Bỏ qua các nguồn cấp dữ liệu,
  • Thay thế mỗi trở lại vận chuyển hoặc tab bằng một không gian duy nhất.

Điều này có nghĩa là (ít nhất) CR và LF sẽ không hoạt động bên trong thuộc tính tiêu đề. Tôi đề nghị bạn nên sử dụng plugin tooltip. Hầu hết các plugin này cho phép HTML tùy ý được hiển thị dưới dạng chú giải công cụ của phần tử.


1
Vâng, tôi biết rằng nó không chính thức. Bạn sai rồi, dù sao đi nữa. Điều đó không có nghĩa là chúng sẽ không được hiển thị. Điều đó có nghĩa là thông số W3C không nêu cách chúng được hiển thị .... Quan điểm của bài viết không đề xuất rằng chúng có thể được sử dụng để thay thế các plugin chức năng nhiều hơn .... đó là trường hợp trong quá trình xuống cấp có thể được sử dụng.
penderi

@ip: Tôi sai ở chỗ các khuyến nghị w3c được cập nhật đề xuất rằng các trình duyệt phân chia nội dung xung quanh ký tự LF. Tuy nhiên, các trình duyệt sẽ thực hiện hành vi này cuối cùng.
Salman A

2

Các chú giải công cụ đẹp hơn có thể được tạo thủ công và có thể bao gồm định dạng 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>

Điều này được lấy từ bài đăng của w3schools về điều này. Thử nghiệm với mã trên đây .


1

Dao cạo cú pháp

Trong trường hợp ASP.NET MVC, bạn chỉ có thể lưu trữ tiêu đề dưới dạng một biến khi sử dụng \r\nvà nó sẽ hoạt động.

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

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

0

hack nhưng hoạt động - (đã thử nghiệm trên chrome và di động)

chỉ cần thêm không có dấu cách cho đến khi nó bị vỡ - bạn có thể phải giới hạn kích thước chú giải công cụ tùy thuộc vào lượng nội dung nhưng đối với các tin nhắn văn bản nhỏ thì công việc này:

&nbsp;&nbsp; etc

Đã thử tất cả mọi thứ ở trên và đây là điều duy nhất làm việc cho tôi -


0

Tôi đã thử với "" để hiển thị văn bản tiêu đề trong dòng mới và nó hoạt động như một nét quyến rũ


0

Tôi đang sử dụng firefox 68.7.0esr và &#013;không hoạt động. Phá vỡ các dòng thông qua <CR>đã làm việc vì vậy tôi đi với nó vì nó đơn giản và chuyển tiếp. I E

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

-1

sử dụng data-html="true"và áp dụng <br>.


1
Đây không phải là một phần của thông số kỹ thuật. Phải là một số plugin tooltip ngẫu nhiên
TJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.