CSS pseudo-class vs. pseudo-selector

2020-07-09 09:22发布

问题:

This is a bit of a pedantic question, but perhaps worth asking. Is there, mechanically, a difference between a pseudo-class and a pseudo-selector in CSS? We use the term interchangeably around here, but it seems that there's a reason for the two terms. Is there any use to differentiating the two?

回答1:

A pseudo-class is a specified thing, while pseudo-selector is a made up word.

(Meanwhile, a pseudo-class matches an element when certain conditions are met (e.g. the mouse is pointing at it, or it is the first child of its parent), while a pseudo-element is something that can be matched but isn't a real or whole element, such as "Thing before an element" or "First line of text in an element".)



回答2:

pseudo-selector does make the odd appearance on the W3C site, but my initial search suggests that it is an old old term that has now been replaced with pseudo-class:

pseudo-selector

the page pseudo-selector :first

http://www.w3.org/TR/2004/CR-css-print-20040225/#section-selectors

CSS has a "lang" pseudo-selector that automatically uses the appropriate attribute depending on the media type

http://www.w3.org/TR/xhtml-media-types/

pseudo-class

5.11.4 The language pseudo-class: :lang

http://www.w3.org/TR/CSS2/selector.html#lang

...and many more.

Pseudo-elements and pseudo-classes

Then there's the descriptions for pseudo-elements and pseudo-classes:

http://www.w3.org/TR/CSS2/selector.html#pseudo-elements

So it looks to me as though pseudo-selectors are no longer in vogue...



回答3:

a pseudo-class is the actual psuedo element, such as :hover, :active, etc..

a pseudo-selector is the complete selector that contains/uses a pseudo-class. such as a:hover, a:active

but pseudo-class is what people should be saying/typing. pseudo-selector I think came from people knowing there was 'pseudo' and 'selectors' so 'why the hell not put them together?' kind of thing.