This feature is not Baseline because it does not work in some of the most widely-used browsers.
The hanging-punctuation CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box.
/* Keyword values */ hanging-punctuation: none; hanging-punctuation: first; hanging-punctuation: last; hanging-punctuation: allow-end; /* Two keywords */ hanging-punctuation: first allow-end; hanging-punctuation: first last; hanging-punctuation: last allow-end; /* Three keywords */ hanging-punctuation: first allow-end last; /* Global values */ hanging-punctuation: inherit; hanging-punctuation: initial; hanging-punctuation: revert; hanging-punctuation: revert-layer; hanging-punctuation: unset;
The hanging-punctuation property may be specified with one, two, or three space-separated values.
noneNo character hangs.
firstAn opening bracket or quote at the start of the first formatted line of an element hangs. This applies to:
lastA closing bracket or quote at the end of the last formatted line of an element hangs. This applies to:
allow-endA stop or comma at the end of a line hangs if it does not otherwise fit prior to justification.
Stops and commas that are allowed to hang include:
U+002C, COMMAU+002E, FULL STOPU+060C, ARABIC COMMAU+06D4, ARABIC FULL STOPU+3001, IDEOGRAPHIC COMMAU+3002, IDEOGRAPHIC FULL STOPU+FF0C, FULLWIDTH COMMAU+FF0E, FULLWIDTH FULL STOPU+FE50, SMALL COMMAU+FE51, SMALL IDEOGRAPHIC COMMAU+FE52, SMALL FULL STOPU+FF61, HALFWIDTH IDEOGRAPHIC FULL STOPU+FF64, HALFWIDTH IDEOGRAPHIC COMMAUser agents may include additional characters.
| Initial value | none |
|---|---|
| Applies to | all elements |
| Inherited | yes |
| Computed value | as specified |
| Animation type | discrete |
hanging-punctuation =
none |
[ first || [ force-end | allow-end ] || last ]
<p> «For a moment, nothing happened. Then, after a second or so, nothing continued to happen.» </p> <p class="hanging"> «For a moment, nothing happened. Then, after a second or so, nothing continued to happen.» </p> <p class="hanging right"> «For a moment, nothing happened. Then, after a second or so, nothing continued to happen.» </p>
p {
width: 15em;
border: 1px solid #cccccc;
font-size: 2rem;
font-style: italic;
margin: 1em;
}
p.hanging {
hanging-punctuation: first last;
}
p.right {
text-align: right;
}
| Specification |
|---|
| CSS Text Module Level 3> # hanging-punctuation-property> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
hanging-punctuation |
No | No | No | No | 10The charactersU+0027 and U+0022 are not supported by the first and last keywords. |
No | No | No | 10The charactersU+0027 and U+0022 are not supported by the first and last keywords. |
No | No | 10The charactersU+0027 and U+0022 are not supported by the first and last keywords. |
allow-end |
No | No | No | No | 10 | No | No | No | 10 | No | No | 10 |
first |
No | No | No | No | 10 | No | No | No | 10 | No | No | 10 |
last |
No | No | No | No | 10 | No | No | No | 10 | No | No | 10 |
none |
No | No | No | No | 10 | No | No | No | 10 | No | No | 10 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/hanging-punctuation