::after (:after)
Quick Summary for ::after (:after)
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.
Code Usage for ::after (:after)
/* Add an arrow after links */ a::after {   content: "→"; } 
More Details for ::after (:after)

::after (:after)

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.

Syntax

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

Examples

Simple usage

Let's create two classes: one for boring paragraphs and one for exciting ones. We can use these classes to add pseudo-elements to the end of paragraphs.

HTML
<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.</p> 
CSS
.exciting-text::after {   content: " <- EXCITING!";   color: green; }  .boring-text::after {   content: " <- BORING";   color: red; } 
Result

Decorative example

We can style text or images in the content property almost any way we want.

HTML
<span class="ribbon">Look at the orange box after this text. </span> 
CSS
.ribbon {   background-color: #5BC8F7; }  .ribbon::after {   content: "This is a fancy orange box.";   background-color: #FFBA10;   border-color: black;   border-style: dotted; } 
Result

Tooltips

This example uses ::after, in conjunction with the attr() CSS expression and a data-descr custom data attribute, to create tooltips. No JavaScript is required!

We can also support keyboard users with this technique, by adding a tabindex of 0 to make each span keyboard focusable, and using a CSS :focus selector. This shows how flexible ::before and ::after can be, though for the most accessible experience a semantic disclosure widget created in some other way (such as with details and summary elements) is likely to be more appropriate.

HTML
<p>Here we have some   <span tabindex="0" data-descr="collection of words and punctuation">text</span> with a few   <span tabindex="0" data-descr="small popups that appear when hovering">tooltips</span>. </p> 
CSS
span[data-descr] {   position: relative;   text-decoration: underline;   color: #00F;   cursor: help; }  span[data-descr]:hover::after, span[data-descr]:focus::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; } 
Result

Accessibility concerns

Using an ::after pseudo-element to add content is discouraged, as it is not reliably accessible to screen readers.

Specifications

Specification
CSS Pseudo-Elements Module Level 4 # generated-content

See also

::before content Select your preferred language English (US)DeutschEspañolFrançais日本語한국어PolskiPortuguês (do Brasil)Русский中文 (简体) Change language

No Items Found.

Add Comment
Type in a Nick Name here
 
Other Categories in CSS
css
Search CSS
Search CSS by entering your search text above.
Welcome

This is my test area for webdev. I keep a collection of code here, mostly for my reference. Also if i find a good link, i usually add it here and then forget about it. more...

Subscribe to weekly updates about things i have added to the site or thought interesting during the last week.

You could also follow me on twitter or not... does anyone even use twitter anymore?

If you found something useful or like my work, you can buy me a coffee here. Mmm Coffee. ☕

❤️👩‍💻🎮

🪦 2000 - 16 Oct 2022 - Boots
Random Quote
Nothing, to my way of thinking, is a better proof of a well ordered mind than a man's ability to stop just where he is and pass some time in his own company.
Seneca
Random CSS Property

:host-context()

The :host-context() CSS pseudo-class function selects the shadow host of the shadow DOM containing the CSS it is used inside (so you can select a custom element from inside its shadow DOM) — but only if the selector given as the function's parameter matches the shadow host's ancestor(s) in the place it sits inside the DOM hierarchy.
:host-context() css reference