Home Web Front-end Front-end Q&A What is the difference between css3 pseudo-classes and pseudo-elements?

What is the difference between css3 pseudo-classes and pseudo-elements?

Dec 22, 2021 am 10:54 AM
css3 Pseudo element Pseudo class

Difference: 1. Pseudo-classes are used to add corresponding styles to existing elements when they are in a certain state, while pseudo-elements are used to create some elements that are not in the DOM tree and add styles to them; 2. Pseudo elements will create an element outside the document tree, but pseudo classes will not; 3. Pseudo elements are represented by a double colon "::", and pseudo classes are represented by a single colon ":".

What is the difference between css3 pseudo-classes and pseudo-elements?

The operating environment of this tutorial: Windows 7 system, CSS3&&HTML5 version, Dell G3 computer.

What are pseudo-classes and pseudo-elements

When the word "pseudo" is mentioned, what do you think of? "Fake", "Wang Jingwei's pseudo-government", "non-existent"...

pseudo-class: used when existing elements are in a certain state (sliding, Click, etc.) to add corresponding styles to it. This state changes dynamically based on user behavior. My understanding is that it is a state that does not exist in itself and will only be triggered under specific circumstances (sliding, clicking). You can use CSS to modify the object in this state. For example: when the user hovers over a specified element, you can use :hover to describe the state of the element. Although it is similar to general CSS and can add styles to existing elements, it can only be used in a state that cannot be described by the DOM tree. Elements add styles, so they are called pseudo-classes.

Pseudo elements: Used to create some elements that are not in the DOM tree and add styles to them. For example, we can use :before to add some text before an element and add styles to the text. Although the user can see the text, it is not actually in the DOM document.

The difference between pseudo-classes and pseudo-elements:

Please see the following example:

Example 1:

<ul>
 <li>第一列</li>
 <li>第二列</li>
</ul>
Copy after login

If we want to add a style to the first column, we can do it in the following two ways:

(1) Add a class to the first column and define the style in the class:

<ul>
  <li class="first-item">第一列</li> 
  <li>第二列</li></ul>
</ul>

.first-item{color:orange;}
Copy after login

(2) If there is no need to add a class, we can add styles to the first

  • by setting: first-child pseudo-class. At this time, the modified li still exists in the DOM tree. Medium

    <ul>
      <li>第一个</li>
      <li>第二个</li>
    </ul>
    
    
    li:first-child{color:orage;}
    Copy after login

    Example 2:

    <p>Hello World, and wish you have a good day!</p>
    Copy after login

    If you want to add a style to the first letter of the paragraph, you can do the following:

    (1) Wrap the first letter element, and set the style for span:

    <p>
      <span class="first">H</span>ello World, and wish you have a good day!
    </p> 
    
    
    .first{color:red;}
    Copy after login

    (2) If the element is not created, we can set the P:first-letter pseudo-element to the

    element. Add a style. At this time, it looks like a virtual span element is created and a style is added to it, but in fact this span element does not exist in the DOM

    <p>Hello World, and wish you have a good day!</p>
    
    p:first-letter{color:red;}
    Copy after login

    From the above example we can see: The operating object of the pseudo class is an existing element in the document tree, while the pseudo element creates an element outside the document tree. Therefore, the difference between pseudo-classes and pseudo-elements is whether an element outside the document tree is created.

    Use single or double colons for pseudo elements?

    The css3 specification requires the use of double colons (::) to represent pseudo-elements to distinguish pseudo-classes and pseudo-elements. For example, pseudo-elements such as ::before and ::after use double colons. The colon (::), :hover and :active pseudo-classes use a single colon (:). Except for some browsers lower than IE8, most browsers support the double colon (::) representation method of pseudo elements.

    However, except for a few pseudo-elements such as ::backdrop, which must use double colons (::), most pseudo-elements support single colon and double colon writing, such as ::after, which can be written as:after. run.

    The w3c standard states that although the CSS3 standard requires pseudo elements to be written with double colons, single colon writing is still supported. For backward compatibility, we recommend that you still use the single colon writing method for now.

    Commonly used pseudo-classes are:

    :active selects the element that is being activated (matches the specified state)

    :hover selects the element that is hovered by the mouse Element (matches the specified status)

    :link Selects elements that have not been visited (matches the specified status)

    :visited Selects elements that have been visited (matches the specified status)

    :first-child selects the element that is the first child element of its parent element

    :lang(value) selects the element with the specified lang attribute

    :focus selects the keyboard input focus Elements

    :enable Selects each enabled element

    :disable Selects each disabled element

    :checked Selects each selected element

    :target selects the current anchor element

    :first-of-type selects the element that is the first child element of a certain type of its parent element

    :last-of- type selects the element that is the last child element of a certain type of its parent element

    :only-of-type selects the element that is the only child element of a certain type of its parent element

    : nth-of-type(n) Selects the element that is the nth child element of a certain type of its parent element

    :nth-last-of-type(n) Selects the element that is the penultimate child element of its parent element n elements of a certain type

    :only-child selects the element that is the only child element of its parent element

    :last-child selects the element that is the last element of its parent element

    :nth-child(n) selects the element that is the nth child element of its parent element

    :nth-last-child(n) Selects elements that are the n-th child element from the bottom of its parent element

    :empty Selects elements that have no child elements

    :in-range selection Select elements whose value is within the specified range

    :out-of-range Select elements whose value is not within the specified range

    :invalid Select elements whose value is invalid

    :valid Selects elements that satisfy the valid value

    :not(selector) Selects elements that do not satisfy selector

    :optional Selects form elements that are optional, that is, there is no "required" attribute

    :read-only selects the form element with "readonly"

    :read-write selects the form element without "readonly"

    :root selects the root element

    Commonly used pseudo-elements

    ::first-letter Selects the first word of the specified element

    ::first-line Selects the first line of the specified element

    ::after Insert content before the content of the specified element

    ::before Insert content after the content of the specified element

    ::selection Select the content selected by the user in the specified element

    (Learning video sharing: css video tutorial)

    The above is the detailed content of What is the difference between css3 pseudo-classes and pseudo-elements?. For more information, please follow other related articles on the PHP Chinese website!

  • Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    How to achieve wave effect with pure CSS3? (code example) How to achieve wave effect with pure CSS3? (code example) Jun 28, 2022 pm 01:39 PM

    How to achieve wave effect with pure CSS3? This article will introduce to you how to use SVG and CSS animation to create wave effects. I hope it will be helpful to you!

    Use CSS skillfully to realize various strange-shaped buttons (with code) Use CSS skillfully to realize various strange-shaped buttons (with code) Jul 19, 2022 am 11:28 AM

    This article will show you how to use CSS to easily realize various weird-shaped buttons that appear frequently. I hope it will be helpful to you!

    How to hide elements in css without taking up space How to hide elements in css without taking up space Jun 01, 2022 pm 07:15 PM

    Two methods: 1. Using the display attribute, just add the "display:none;" style to the element. 2. Use the position and top attributes to set the absolute positioning of the element to hide the element. Just add the "position:absolute;top:-9999px;" style to the element.

    How to implement lace borders in css3 How to implement lace borders in css3 Sep 16, 2022 pm 07:11 PM

    In CSS, you can use the border-image attribute to achieve a lace border. The border-image attribute can use images to create borders, that is, add a background image to the border. You only need to specify the background image as a lace style; the syntax "border-image: url (image path) offsets the image border width inward. Whether outset is repeated;".

    It turns out that text carousel and image carousel can also be realized using pure CSS! It turns out that text carousel and image carousel can also be realized using pure CSS! Jun 10, 2022 pm 01:00 PM

    How to create text carousel and image carousel? The first thing everyone thinks of is whether to use js. In fact, text carousel and image carousel can also be realized using pure CSS. Let’s take a look at the implementation method. I hope it will be helpful to everyone!

    Why do pseudo-elements fail? Why do pseudo-elements fail? Nov 21, 2023 pm 05:13 PM

    Reasons for pseudo-element failure: 1. Selector issues; 2. Style conflicts; 3. Inheritance issues; 4. Syntax errors; 5. Browser compatibility issues, etc. Detailed introduction: 1. Selector problem, the selector of the pseudo element may be incorrect, resulting in the target element not being selected; 2. Style conflict, if there is a style conflict in CSS, the pseudo element may become invalid; 3. Inheritance problem, Pseudo elements may not inherit certain style attributes; 4. Syntax errors. If there are syntax errors in CSS, the pseudo elements may fail; 5. Browser compatibility issues, etc.

    Use the :nth-child(n+3) pseudo-class selector to select the style of child elements whose position is greater than or equal to 3 Use the :nth-child(n+3) pseudo-class selector to select the style of child elements whose position is greater than or equal to 3 Nov 20, 2023 am 11:20 AM

    Use the :nth-child(n+3) pseudo-class selector to select the style of child elements whose position is greater than or equal to 3. The specific code example is as follows: HTML code: &lt;divid="container"&gt;&lt;divclass="item"&gt ;First child element&lt;/div&gt;&lt;divclass="item"&

    css3 what is adaptive layout css3 what is adaptive layout Jun 02, 2022 pm 12:05 PM

    Adaptive layout, also known as "responsive layout", refers to a web page layout that can automatically recognize the screen width and make corresponding adjustments; such a web page can be compatible with multiple different terminals instead of making a specific version for each terminal. . Adaptive layout was born to solve the problem of mobile web browsing, and can provide a good user experience for users using different terminals.

    See all articles