What are CSS pseudo-elements?

CSS pseudo-elements are a way to style a specific part of an HTML element, rather than the element as a whole. They allow you to style specific parts of an element that are not included in the markup of the page, such as the first letter or first line of a paragraph. They are created by using special selectors called "pseudo-element selectors" that are preceded by a double colon (::) to distinguish them from pseudo-class selectors (:)

There are several types of CSS pseudo-elements, including:

  • ::before: Creates a pseudo-element that is the first child of the selected element. Can be used to insert content before the content of an element.
  • ::after: Creates a pseudo-element that is the last child of the selected element. Can be used to insert content after the content of an element.
  • ::first-letter: Selects the first letter of the first line of an element. Can be used to style the first letter of a paragraph or other text element.
  • ::first-line: Selects the first line of an element. Can be used to style the first line of a paragraph or other text element.
  • ::placeholder: Applies styles to the placeholder text of an input element.
  • ::selection: Applies styles to the text selected by the user.

Pseudo-elements are most commonly used to add presentational effects, such as adding a background color to the first letter of a paragraph or creating a custom arrow for a dropdown menu, but they can also be used to insert content like a icon before or after a menu item or paragraph.

It's also important to note that pseudo-elements can be combined with other selectors to target specific elements on the page. For example, you can use p::first-letter to target the first letter of a p element, or .my-class::before to target a ::before pseudo-element on an element with the class of "my-class".

Here's an example of how to use ::before pseudo-element to add an icon before a button:

.icon-btn::before {
    content: url("icon.svg");
    padding-right: 0.5em;
}

This will insert an icon using the specified SVG file before the content of the button with a class icon-btn and also providing some padding to separate the icon and the button text.

It's also worth mentioning that not all pseudo-elements are widely supported across different browsers and versions of them. For example, the ::placeholder pseudo-element is not supported by Internet Explorer, so you might want to use a JavaScript fallback or other solution to ensure compatibility across all browsers.

Overall, CSS pseudo-elements are a powerful tool for adding presentational effects and inserting content in specific places in an HTML element. And by knowing and understanding the different types of pseudo-elements and how to use them effectively, you can create more visually appealing and functional websites.

Additional resources
  • Frontend web development courses

    Beginner-friendly courses focusing on HTML, CSS, and JavaScript.

    View Courses
  • Frontend web development projects

    Beginner-friendly projects focusing on HTML, CSS, and JavaScript.

    View Projects
  • Free website templates

    Collection of free, high-quality website templates for your next project.

    View Templates