- CSS: white-space Line Break
- white-space: normal
- white-space: pre
- white-space: pre-wrap
- white-space: pre-line
- white-space: nowrap
- Non-Breaking Whitespace
- CSS
- Basics
- Selectors
- Color
- Font
- white-space
- Try it
- Syntax
- Values
- Collapsing of white space
- Formal definition
- Formal syntax
- Examples
- Basic example
- Line breaks inside elements
- In action
- Specifications
- Browser compatibility
- See also
CSS: white-space Line Break
The white-space property lets you control when to break a line at whitespace positions, and whether repeated whitespaces are collapsed into one single whitespace.
normal Normal, like HTML p tag. pre Like HTML pre tag. Newline character forces a wrap. pre-wrap Like HTML p and pre combined. Newline character forces a wrap, otherwise long line will also be wrapped. pre-line Like pre-wrap , but repeated spaces are shrinked into just one space. break-spaces Same as pre-wrap , except that: • Any sequence of preserved white space always takes up space, including at the end of the line. • A line breaking opportunity exists after every preserved white space character, including between white space characters. • Such preserved spaces take up space and do not hang, and thus affect the box’s intrinsic sizes ( min-content size and max-content size). nowrap No wrap.
New lines | Spaces and tabs | Text wrapping | End-of-line spaces | |
---|---|---|---|---|
normal | Collapse | Collapse | Wrap | Remove |
pre | Preserve | Preserve | No wrap | Preserve |
pre-wrap | Preserve | Preserve | Wrap | Hang |
pre-line | Preserve | Collapse | Wrap | Remove |
break-spaces | Preserve | Preserve | Wrap | Wrap |
nowrap | Collapse | Collapse | No wrap | Remove |
white-space: normal
This is the normal behavior of the paragraph element
.
- Repeated spaces shrink into a single one.
- Newline character is equivalent to a space.
- Text longer than the element’s width are wrapped.
Note that white spaces are any of space, tab, and newline characters. You can always use
element to force a line break.
white-space: pre
With white-space: pre , the behavior is the same as the element.
- White spaces are shown as they are. (they do not shrink into one)
- Newline character will force a wrap.
- The element’s width has no effect on the line wrapping.
pre is best used for showing computer program code, or poetry of short lines.
white-space: pre-wrap
p white-space:pre-wrap; width:60ch>
With white-space:pre-wrap , it’s like mix of pre , and normal .
- Repeated spaces are NOT shrinked into just one space.
- Newline will force a wrap.
- Very long lines will be automatically wrapped too, by the element’s width.
This is very useful for computer code, even better than pre , because if you have a long line comment, it’ll be wrapped in the display, but when user copies the code, there will not be extra newline. For example:
# python 3 # Here is a very long comment. long01 long02 long03 long04 long05 long06 long07 long08 long09 long10 long11 long12 long13 long14 long15 long16 long17 print (5)
white-space: pre-line
This is just like pre-wrap , except that repeated spaces are shrinked into just one space.
white-space: nowrap
p white-space:nowrap; width:60ch;>
- Repeated spaces shrink into a single one.
- Newline is equivalent to space. (no wrap)
- The element’s width has no effect on line wrapping.
- All text becomes one single very long line, even longer than window width.
- No wrap whatsoever.
- The only wrap is if you have
.
Non-Breaking Whitespace
To prevent a line wrap at positions you do not want to happen, use the Unicode character named NO-BREAK SPACE. Its decimal value is 160, hexadecimal is A0. The HTML entity is . [see HTML Entity List]
CSS
Basics
Selectors
Color
Font
white-space
The white-space CSS property sets how white space inside an element is handled.
Try it
The property specifies two things:
Note: To make words break within themselves, use overflow-wrap , word-break , or hyphens instead.
Syntax
/* Single keyword values */ white-space: normal; white-space: nowrap; white-space: pre; white-space: pre-wrap; white-space: pre-line; white-space: break-spaces; /* white-space-collapse and text-wrap shorthand values */ white-space: collapse balance; white-space: preserve nowrap; /* Global values */ white-space: inherit; white-space: initial; white-space: revert; white-space: revert-layer; white-space: unset;
Values
white-space property values can be specified as a single keyword chosen from the list of values below, or two values representing shorthand for the white-space-collapse and text-wrap properties.
Sequences of white space are collapsed. Newline characters in the source are handled the same as other white space. Lines are broken as necessary to fill line boxes.
Collapses white space as for normal , but suppresses line breaks (text wrapping) within the source.
Sequences of white space are preserved. Lines are only broken at newline characters in the source and at elements.
Sequences of white space are preserved. Lines are broken at newline characters, at , and as necessary to fill line boxes.
Sequences of white space are collapsed. Lines are broken at newline characters, at , and as necessary to fill line boxes.
The behavior is identical to that of pre-wrap , except that:
- Any sequence of preserved white space always takes up space, including at the end of the line.
- A line-breaking opportunity exists after every preserved white space character, including between white space characters.
- Such preserved spaces take up space and do not hang, thus affecting the box’s intrinsic sizes ( min-content size and max-content size).
The following table summarizes the behavior of the various white-space keyword values:
New lines | Spaces and tabs | Text wrapping | End-of-line spaces | End-of-line other space separators | |
---|---|---|---|---|---|
normal | Collapse | Collapse | Wrap | Remove | Hang |
nowrap | Collapse | Collapse | No wrap | Remove | Hang |
pre | Preserve | Preserve | No wrap | Preserve | No wrap |
pre-wrap | Preserve | Preserve | Wrap | Hang | Hang |
pre-line | Preserve | Collapse | Wrap | Remove | Hang |
break-spaces | Preserve | Preserve | Wrap | Wrap | Wrap |
Note: There is a distinction made between spaces and other space separators. These are defined as follows:
Spaces (U+0020), tabs (U+0009), and segment breaks (such as newlines).
All other space separators defined in Unicode, other than those already defined as spaces.
Where white space is said to hang, this can affect the size of the box when measured for intrinsic sizing.
Collapsing of white space
Formal definition
Formal syntax
white-space =
normal |
pre |
nowrap |
pre-wrap |
break-spaces |
pre-line
Examples
Basic example
Line breaks inside elements
In action
div id="css-code" class="box"> p < white-space: select> option>normaloption> option>nowrapoption> option>preoption> option>pre-wrapoption> option>pre-lineoption> option>break-spacesoption> option>preserve nowrapoption> select> > div> div id="results" class="box"> p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. p> div>
.box width: 300px; padding: 16px; > #css-code background-color: rgb(220, 220, 220); font-size: 16px; font-family: monospace; > #css-code select font-family: inherit; > #results background-color: rgb(230, 230, 230); overflow-x: scroll; white-space: normal; font-size: 14px; >
const select = document.querySelector("#css-code select"); const results = document.querySelector("#results p"); select.addEventListener("change", (e) => results.setAttribute("style", `white-space: $e.target.value>`); >);
Specifications
Browser compatibility
BCD tables only load in the browser