How to prevent line break at hyphens on all browsers

You can use which is a Unicode NON-BREAKING HYPHEN (U+2011).

HTML: ‑ or ‑

Also see: http://en.wikipedia.org/wiki/Hyphen#In_computing


One solution could be to use an extra span tag and the white-space CSS property. Just define a class like this:

.nowrap {
    white-space: nowrap;
}

And then add a span with that class around your hyphenated text.

<p>This is the <span class="nowrap">anti-inflammable</span> model</p>

This approach should work just fine in all browsers - the buggy implementations listed here are for other values of the white-space property: http://reference.sitepoint.com/css/white-space#compatibilitysection


I’m afraid there’s no simpler way to do it reliably than splitting the text to “words” (sequences of non-whitespace characters separated by whitespace) and wrapping each “word” that contains a hyphen inside nobr markup. So input data like bla bla foo-bar bla bla would be turned to bla bla <nobr>foo-bar</nobr> bla bla.

You might even consider inserting nobr markup whenever the “word” contains anything but letters and digits. The reason is that some browsers may even break strings like “2/3” or “f(0)” (see my page on oddities of line breaking in browsers).

Tags:

Html

Css