Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best way to break HTML text on slashes (/)?

I have an HTML table 360px wide, which works great. The challenge is that sometimes a url appears http://this/is/a/really-really-really-really-really/long/url in the text. This causes the table to expand horizontally and a scroll bar appears on the bottom.

I don't think overflow:hidden will work because half of the text would be hidden.

What is the best way to force breaking the line on slashes (/) and dashes (-) in CSS (hopefully)?

It should work with IE7+, Chrome, Firefox and Safari.

Working in Rails 3 and jQuery.

like image 398
B Seven Avatar asked Nov 18 '11 17:11

B Seven


People also ask

How do you break words in HTML?

The word-break property in CSS can be used to change when line breaks ought to occur. Normally, line breaks in text can only occur in certain spaces, like when there is a space or a hyphen. If we then set the width of the text to one em , the word will break by each letter: HTML.

How do you break a long word in HTML?

The <wbr> element If you know where you want a long string to break, then it is also possible to insert the HTML <wbr> element. This can be useful in cases such as displaying a long URL on a page.

What is text break in HTML?

The <br> HTML element produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is significant.


2 Answers

While the css word-wrap: break-word; does work, its implementation is different across browsers.

If you have control of the content and want exact breakpoints, you can insert

  • a <wbr> word break (supported in all major browsers except IE8 CanIUse.com);
  • &#8203; zero-width space (U+200B) - ugly in IE<=6
  • &shy; soft hyphen - though of course this adds a hyphen when breaking which is not always what is desired.

I have a large corporate user base who still have to use IE8, so when I hit this problem I used the C# someString.Replace("/", "/&#8203;") in the server-side code.

Gotcha: If you insert a zero-width space in an email address, when a user copies and pastes into their email client, the space gets copied too and the email will fail with no way for a user to see why (the space is zero width ...)

References

  • Stack Overflow
  • http://www.quirksmode.org/oddsandends/wbr.html - with examples

Further Reading

  • https://kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ (March 2012)
  • https://css-tricks.com/almanac/properties/w/word-break/ (Sep 2012)
  • https://css-tricks.com/almanac/properties/h/hyphenate/ (Sep 2011)
  • https://developer.mozilla.org/en-US/docs/Web/CSS/word-break
  • https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap
like image 90
Ruskin Avatar answered Oct 04 '22 04:10

Ruskin


You can use word-wrap : break-word; like so:

<div>http://www.aaa.com/bbb/ccc/ddd/eee/fff/ggg</div>  div {     width : 50px;     border : 1px solid #000;     word-wrap : break-word; } 

I tested this in: I.E. 6/7/8, Firefox 7, Opera 11, Safari 5, Chrome 15

Here is a jsfiddle: http://jsfiddle.net/p4SxG/

like image 37
Jasper Avatar answered Oct 04 '22 03:10

Jasper