2013-04-05 34 views
29

Tôi muốn một ký tự ngắt dòng tùy chọn luôn ẩn mặt hoạt động với kiểu dáng word-wrap: break-word; CSS.Thực thể HTML ngắt dòng tùy chọn luôn vô hình

Dưới đây là một số chi tiết cụ thể. Mục tiêu của tôi là phá vỡ các liên kết dài ở những nơi hợp lý. Các ký tự này là một nơi tốt để bắt đầu: -, ., _, /, \. Đây không phải là một câu hỏi Rails cụ thể, nhưng tôi muốn chia sẻ một số mã Tôi đang sử dụng hiện nay:

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

Đây là vấn đề với các mã trên: khi ­ hiệu lực thi hành (trong một bảng với: word-wrap: break-word;), ­ được hiển thị là -. Tôi không muốn thấy số -; Tôi muốn ngắt dòng mà không có bất kỳ ký tự nào được hiển thị.


+0

Thẻ đơn giản
không hoạt động cho bạn trong trường hợp này? –

+0

@Christopher: '
' không phải là ngắt dòng tùy chọn –

+0

Câu trả lời này có thể hữu ích. Không phải là một nhân vật, nhưng sử dụng nhịp. http://stackoverflow.com/questions/5392853/html-css-denoting-a-preferred-place-for-a-line-break – Unrelated

Trả lời

47

​ là thực thể HTML cho ký tự unicode được gọi là không gian rộng 0 (ZWSP).

"Trong trang HTML, không gian này có thể được sử dụng như một dòng-break tiềm năng trong lời nói dài như một sự thay thế cho thẻ <wbr>." - Zero-width space - Wikipedia

Thẻ <wbr> cũng làm việc, như đã đề cập bởi Aaron's answer. Tôi nghĩ rằng tôi thích thực thể HTML này trên thẻ vì thực thể có vẻ đơn giản hơn: unicode xử lý nó, không phải trình duyệt web.

+2

Unicode xử lý nó, nhưng trình duyệt web không bắt buộc phải tuân theo tiêu chuẩn Unicode hoặc để hỗ trợ ký tự đặc biệt này. Đây là một vấn đề khó khăn, nhưng nói chung, ZWSP không chỉ trên các trình duyệt khá cũ, trong khi '' có những điều kỳ quặc trong các trình duyệt mới hơn, quá; xem http://www.cs.tut.fi/~jkorpela/html/nobr.html –

+1

@David, Còn về trình phân tách vô hình thì sao? Xem http://www.fileformat.info/info/unicode/char/2063/index.htm – Pacerier

+0

@Pacerier Điều này dường như được thiết kế cho khoảng trống toán học, được cung cấp theo ngữ cảnh của http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:subhead=Invisible%20operators:]. Từ http://www.fileformat.info/info/unicode/char/2063/index.htm: "toán tử tiếp giáp cho biết rằng các ký hiệu toán học liền kề tạo thành một danh sách, ví dụ: khi không có dấu phẩy hiển thị được sử dụng giữa nhiều chỉ mục". –

4

<wbr> vẻ như nó làm những gì bạn muốn, nhưng nó trông giống như sự hỗ trợ cho nó, và &shy; cho rằng vấn đề, là very inconsistent. Thật không may, có thể không có cách nào đặc biệt tốt để làm những gì bạn muốn.

+2

Cảm ơn. Lưu ý: yêu cầu hỗ trợ trình duyệt không nhất quán là từ năm 2008. Trên hệ thống của tôi, các trình duyệt hiện đại (Firefox, Safari, Chrome) làm điều đúng với ''. Tôi hy vọng họ cũng làm việc cho các phương pháp phá vỡ từ/dòng khác. Bạn có thể tìm thấy một kế toán toàn diện tại [Dấu gạch ngang mềm (SHY) - một vấn đề khó?] (Http://www.cs.tut.fi/~jkorpela/shy.html) –

+0

Đây là câu trả lời cung cấp một cái nhìn tổng quan tốt đẹp về sự hỗ trợ các kỹ thuật word-hyphenation/-breaking/-splitting: https://stackoverflow.com/a/28672471/3439786 Ngoài ra còn có trang _caniuse_: http://caniuse.com/#feat=wbr-element – Dennis98

+0

Một lợi thế của '' trên thực thể Unicode không gian rộng bằng không là nếu chuỗi bạn muốn ngắt là URL có thể được sao chép từ trình duyệt (như khi cung cấp tham chiếu học thuật cho trang web không phải là liên kết), thực thể Unicode được sao chép (ít nhất là trong MacOS) và URL kết quả có vẻ chính xác trong trình duyệt nhưng bị ngắt khi cố truy cập nó. '' không có vấn đề này. – theJBRU

Các vấn đề liên quan