white-space

The white-space declaration allows you to tweak the wrapping of an element.

See also the specification.

Selector IE 5.5 IE 6 IE 7 IE8 as IE7 IE8 as IE8 FF 2 FF 3.0 FF 3.1b Saf 3.0 Win Saf 3.1 Win Saf 4.0b Win Chrome 1 Chrome 2 Opera 9.62 Opera 10a Konqueror 3.5.7
nowrap
Yes Yes Yes Yes Yes Yes

pre
No Yes Yes Yes Yes Yes Yes

pre-wrap
No Yes No Yes Yes Yes Yes Yes

pre-line
No Yes No Yes Yes Yes Yes Yes

Test sheet:

p.test {
	border: 1px solid #000000;
	padding: 5px;
	width: 300px;
}

I add the relevant white-space value inline.

nowrap

This value suppresses all line breaks in the element, except where it contains <br />s or <wbr />s.

This is the test paragraph with white-space: nowrap. It has all kinds of odd tabs and spacing in the HTML source code. Should they be preserved?

If the line of code stretches beyond the right border of the page, the browser should generate a horizontal scrollbar.

pre

This value makes the element behave as a <pre>: all line breaks, tabs and other oddities of the source code are literally followed.

This is the test paragraph with white-space: pre. It has all kinds of odd tabs and spacing in the HTML source code. Should they be preserved?

pre-wrap

This value behaves as the pre value, except that it adds extra line breaks to prevent the text breaking out of the element's box.

This is the test paragraph with white-space: pre-wrap. It has all kinds of odd tabs and spacing in the HTML source code. Should they be preserved?

Opera renders it like this:

whitespace: pre-wrap in action

pre-line

As far as I understand this value ignores tabs and multiple spaces, but it breaks off the text at hard returns in the source code, as well as when it's necessary to prevent the text from breaking out of its box.

This is the test paragraph with white-space: pre-line. It has all kinds of odd tabs and spacing in the HTML source code. Should they be preserved?

iCab renders it like this:

whitespace: pre-line in action