šŸ“• Build AI Agents using LangGraph.js is now out!

The difference between : vs :: in CSS, or pseudo-classes vs pseudo-elements

Is there a difference between writing something such as p:suff_here vs writing something like p::suff_here?

The answer is yes. In the first case the single colon : refers to a CSS pseudo-class, while double colon :: refers to a pseudo-element.

Then what is the difference between CSS pseudo classes and CSS pseudo elements? Well:

  • the pseudo-classes are referring to a specific SITUATION in which the targeted element can be. Something must happen so that the pseudo-class becomes active. For example: hovering an element with the mouse, the element has a given class or a link was visited.
  • while the pseudo-elements refer to a specific artificial PART of the targeted element. For example the first line or letter in a paragraph, or the selected text. In a given selector rule, you can have just one pseudo-element.

Note that we also have functional pseudo-classes or some pseudo-elements that will take a list of arguments as parameters:

/* pseudo class */
p:is(.main, .second) {}

/* pseudo element */
p::part(table) {}

Can I use : instead of :: ?

Given that the distinction between pseudo-classes and pseudo-elements was not present in older versions of the W3C spec, most browsers support both syntaxes for the original pseudo-elements.

This means that for some pseudo-elements, both the el:my_pseudo_element and el::my_pseudo_element will work.

However, the general rule is to use : for pseudo-classes and :: for pseudo-elements.

What about the specificity of pseudo-elements vs pseudo-classes?

Most of the pseudo-elements and pseudo-classes have an equal specificity of 10 points. The same as a normal class selector.

But there are exceptions to this rule. For example, the functional pseudo-class is() takes the highest specificity from the given selector list, while where() has a specificity of zero.

šŸ“– Build a full trivia game app with LangChain

Learn by doing with this FREE ebook! This 35-page guide walks you through every step of building your first fully functional AI-powered app using JavaScript and LangChain.js

šŸ“– Build a full trivia game app with LangChain

Learn by doing with this FREE ebook! This 35-page guide walks you through every step of building your first fully functional AI-powered app using JavaScript and LangChain.js


Leave a Reply

Your email address will not be published. Required fields are marked *