Why is the <nobr> deprecated?
You may use the obsolete/non-standard <nobr>
HTML tag — if you define it in CSS.
It's virtually guaranteed that this element name will never be repurposed for any task other than its original behavior, and this name is descriptive of the action you'll define in CSS, making it intuitive for people reviewing your HTML.
Warning: Custom/obsolete elements will make your code fail to validate as HTML.
Your CSS will need to look like this:
nobr { white-space: nowrap; hyphens: none; }
You may or may not want (or need) the hyphens: none;
part, but I have added it for completeness since it appears some implementations of <nobr>
(used to?) also suppress hyphenation while white-space: nowrap;
does not do that.
This defines the white-space
as nowrap
, which suppresses line breaks within white space and the hyphens
as none
, which prevents breaking within words (including ignoring characters within words that "suggest line break points").
It isn't deprecated because it was never standard in the first place.
HTML is (in theory) a semantic markup language. It describes the structure and semantics of a document along with relationships to other resources.
HTML is not supposed to describe presentation. A bunch of presentational features were added during the browser wars. Some of these became standardised. Most of them were subsequently deprecated when CSS came along.
CSS is a language for describing presentation. When you have a chunk of text that shouldn't have a line break in it, that is usually a matter of presentation so CSS is the right place to do it.
The exceptions are usually handled by non-breaking spaces (
).