text-overflow
text-overflow
The text-overflow
CSS property determines how overflowed content that is not displayed is signaled to users. It can be clipped, display an ellipsis ('…
', U+2026 Horizontal Ellipsis
), or display a custom string.
/* Overflow behavior at line end Right end if ltr, left end if rtl */ text-overflow: clip; text-overflow: ellipsis; text-overflow: "…"; text-overflow: fade; text-overflow: fade(10px); text-overflow: fade(5%); /* Overflow behavior at left end | at right end Directionality has no influence */ text-overflow: clip ellipsis; text-overflow: "…" "…"; text-overflow: fade clip; text-overflow: fade(10px) fade(10px); text-overflow: fade(5%) fade(5%); /* Global values */ text-overflow: inherit; text-overflow: initial; text-overflow: unset;
Clipping happens at the border of the box; to clip at the character limit an empty custom string can be used (''
).
This property only affects content that is overflowing a block container element in its inline progression direction (not text overflowing at the bottom of a box, for example). Text can overflow when it is prevented from wrapping (e.g., due to ‘white-space: nowrap
’) or a single word being too long to fit.
This CSS property doesn't force an overflow to occur; to do so and make text-overflow
to be applied, the author must apply some additional properties on the element, like setting overflow
to hidden
.
Initial value | clip |
---|---|
Applies to | block container elements |
Inherited | no |
Media | visual |
Computed value | as specified |
Animation type | discrete |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Syntax
The text-overflow
property may be specified using one or two values.
If one value is given, it specifies overflow behavior for the end of the line (the right end for left-to-right text, the left end for right-to-left text). If two values are given, the first specifies overflow behavior for the left end of the line, and the second specifies it for the right end of the line.
Each value is specified as one of:
- one of the keyword values:
clip
,ellipsis
,fade
- the function
fade()
, which is passed a<length>
or a<percentage>
to control the fade distance - a
<string>
.
Values
clip
- This keyword value indicates to truncate the text at the limit of the content area, therefore the truncation can happen in the middle of a character. To truncate at the transition between two characters, the empty string value (
''
) must be used. The valueclip
is the default for this property. ellipsis
- This keyword value indicates to display an ellipsis (
'…'
,U+2026 Horizontal Ellipsis
) to represent clipped text. The ellipsis is displayed inside the content area, decreasing the amount of text displayed. If there is not enough space to display the ellipsis, it is clipped. -
<string>
- The
<string>
to be used to represent clipped text. The string is displayed inside the content area, shortening more the size of the displayed text. If there is not enough place to display the string itself, it is clipped. -
fade
- This keyword clips the overflowing inline content and applies a fade-out effect near the edge of the line box with complete transparency at the edge.
-
fade( <length> | <percentage> )
- This function clips the overflowing inline content and applies a fade-out effect near the edge of the line box with complete transparency at the edge.
- The argument determines the distance over which the fade effect is applied. The
<percentage>
is resolved against the width of the line box. Values lower than0
are clipped to0
. Values greater than the width of the line box are clipped to the width of the line box.
Formal syntax
[ clip | ellipsis | <string> ]{1,2}
Examples
CSS content
p { width: 200px; border: 1px solid; padding: 2px 5px; /* BOTH of the following are required for text-overflow */ white-space: nowrap; overflow: hidden; } .overflow-visible { white-space: initial; } .overflow-clip { text-overflow: clip; } .overflow-ellipsis { text-overflow: ellipsis; } .overflow-string { /* Not supported in most browsers, see the 'Browser compatibility' section below */ text-overflow: " [..]"; }
HTML content
<p class="overflow-visible">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> <p class="overflow-clip">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> <p class="overflow-ellipsis">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> <p class="overflow-string">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
Result
CSS value | direction: ltr | direction: rtl | ||
---|---|---|---|---|
Expected Result | Live result | Expected Result | Live result | |
visible overflow | 1234567890 | 1234567890 | 0987654321 | 1234567890 |
text-overflow: clip | ||||
text-overflow: '' | 12345 | 54321 | ||
text-overflow: ellipsis | 1234… | …4321 | ||
text-overflow: '.' | 1234. | .4321 | ||
text-overflow: clip clip | 123456 | 654321 | ||
text-overflow: clip ellipsis | 1234… | 6543… | ||
text-overflow: clip '.' | 1234. | 6543. | ||
text-overflow: ellipsis clip | …3456 | …4321 | ||
text-overflow: ellipsis ellipsis | …34… | …43… | ||
text-overflow: ellipsis '.' | …34. | …43. | ||
text-overflow: ',' clip | ,3456 | ,4321 | ||
text-overflow: ',' ellipsis | ,34… | ,43… | ||
text-overflow: ',' '.' | ,34. | ,53. |
Specifications
Specification | Status | Comment |
---|---|---|
CSS Basic User Interface Module Level 4 The definition of 'text-overflow' in that specification. | Working Draft | Added the values <string> and fade and the fade() function |
CSS Basic User Interface Module Level 3 The definition of 'text-overflow' in that specification. | Candidate Recommendation | Initial definition |
A previous version of this interface reached the Candidate Recommendation status. As some not-listed-at-risk features needed to be removed, the spec was demoted to the Working Draft level, explaining why browsers implemented this property unprefixed, though not at the CR state.
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 1.0 (312.3) | (Yes) | 7.0 (7.0)[1] | 6.0[2] | 9-o[3] 11.0 | 1.3 (312.3) |
Two-value syntax | No support | No support | 9.0 (9.0) | No support | No support | No support |
String value | No support | No support | 9.0 (9.0) | No support | No support | No support |
fade
| No support | No support | No support | No support | No support | No support |
fade()
| No support | No support | No support | No support | No support | No support |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | 7.0 (7.0) | ? | (Yes) | (Yes) |
Two-value syntax | No support | No support | 9.0 (9.0) | No support | No support | No support |
String value | No support | No support | 9.0 (9.0) | No support | No support | No support |
fade
| No support | No support | No support | No support | No support | No support |
fade()
| No support | No support | No support | No support | No support | No support |
[1] Starting in Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7), handling of text-overflow on blocks with inline overflow on both horizontal sides has been corrected; previously, if you specified only one value (such as text-overflow:ellipsis;
), ellipsing was happening on both sides instead of just the end edge based on the block's text direction.
[2] Internet Explorer 8 introduced the prefixed version, -ms-text-overflow
, synonymous with text-overflow
. Do not use this prefixed version.
[3] Opera 9 and 10 require the prefixed version, -o-text-overflow
.
See also
- Related CSS properties:
overflow
,white-space
© 2005–2017 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow