hanging-punctuation CSS property

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.

Syntax

css
/* 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.

Values

none

No character hangs.

first

An opening bracket or quote at the start of the first formatted line of an element hangs. This applies to:

last

A closing bracket or quote at the end of the last formatted line of an element hangs. This applies to:

allow-end

A 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:

User agents may include additional characters.

Formal definition

Initial valuenone
Applies toall elements
Inheritedyes
Computed valueas specified
Animation typediscrete

Formal syntax

hanging-punctuation = 
none |
[ first || [ force-end | allow-end ] || last ]

Examples

undefined

Setting opening and closing quotes to hang

HTML

html
<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>

CSS

css
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;
}

Result

Specifications

See also