In CSS, ::after
creates a pseudo-element that is the last child of the selected element. It is often used to add cosmetic content to an element with the content
property. It is inline by default.
/* Add an arrow after links */ a::after { content: "→"; }
Note: The pseudo-elements generated by ::before
and ::after
are contained by the element's formatting box, and thus don't apply to replaced elements such as <img>
, or to <br>
elements.
/* CSS3 syntax */ ::after /* CSS2 syntax */ :after
Note: CSS3 introduced the ::after
notation (with two colons) to distinguish pseudo-classes from pseudo-elements. Browsers also accept :after
, introduced in CSS2.
Let's create two classes: one for boring paragraphs and one for exciting ones. We can then mark each paragraph by adding a pseudo-element to the end of it.
<p class="boring-text">Here is some plain old boring text.</p> <p>Here is some normal text that is neither boring nor exciting.</p> <p class="exciting-text">Contributing to MDN is easy and fun. Just hit the edit button to add new live samples, or improve existing samples.</p>
.exciting-text::after { content: "<- now this *is* exciting!"; color: green; } .boring-text::after { content: "<- BORING!"; color: red; }
We can style text or images in the content
property almost any way we want.
<span class="ribbon">Notice where the orange box is.</span>
.ribbon { background-color: #5BC8F7; } .ribbon::after { content: "Look at this orange box."; background-color: #FFBA10; border-color: black; border-style: dotted; }
The following example shows the use of the ::after
pseudo-element in conjunction with the attr()
CSS expression and a data-descr
custom data attribute to create a pure-CSS, glossary-like tooltip.
<p>Here is the live example of the above code.<br /> We have some <span data-descr="collection of words and punctuation">text</span> here with a few <span data-descr="small popups which also hide again">tooltips</span>.<br /> Don't be shy, hover over to take a <span data-descr="not to be taken literally">look</span>. </p>
span[data-descr] { position: relative; text-decoration: underline; color: #00F; cursor: help; } span[data-descr]:hover::after { content: attr(data-descr); position: absolute; left: 0; top: 24px; min-width: 200px; border: 1px #aaaaaa solid; border-radius: 10px; background-color: #ffffcc; padding: 12px; color: #000000; font-size: 14px; z-index: 1; }
Specification | Status | Comment |
---|---|---|
CSS Pseudo-Elements Level 4 The definition of '::after' in that specification. | Working Draft | No significant changes to the previous specification. |
CSS Transitions The definition of 'transitions on pseudo-element properties' in that specification. | Working Draft | Allows transitions on properties defined on pseudo-elements. |
CSS Animations The definition of 'animations on pseudo-element properties' in that specification. | Working Draft | Allows animations on properties defined on pseudo-elements. |
Selectors Level 3 The definition of '::after' in that specification. | Recommendation | Introduces the two-colon syntax. |
CSS Level 2 (Revision 1) The definition of '::after' in that specification. | Recommendation | Initial definition, using the one-colon syntax |
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support |
Yes Yes1 |
Yes Yes1 |
11 |
9 81 |
7 41 |
4 41 |
Animation and transition support | 26 | Yes | 4 | No | No | No |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | Opera Android | iOS Safari | Samsung Internet |
---|---|---|---|---|---|---|---|
Basic support |
Yes Yes1 |
? |
Yes Yes1 |
? | ? | ? | ? |
Animation and transition support | Yes | ? | Yes | 4 | No | No | ? |
1. Supported as :after
.
2. Before Firefox 57, Firefox had a bug where ::after
pseudo-elements were still generated, even if the content
property value were set to normal
or none
.
3. Before Firefox 3.5, only the CSS level 2 behavior of :after
was supported, which disallowed position
, float
, list-style-*
and some display
properties.
© 2005–2018 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/::after