`

伪类和伪元素的区别

阅读更多

【前言】

    本文简单说明下伪类和伪元素的区别。在CSS1,CSS2中,大家或多或少的用过 :hover,:visited, :before, :after。CSS1和CSS2中对伪类的伪元素的区别比较模糊,甚至经常有同行将:before、:after称为伪类。CSS3对这两个概念做了相对较清晰地概念,并且在语法上也很明显的讲二者区别开。

 

【主体】

    (1)概括:伪类与伪元素的本质区别就是是否抽象创造了新元素;可以同时使用多个伪类,而只能同时使用一个伪元素;

    (2)定义:

             首先先来看看伪类与伪元素的定义 ,w3c中对于它们是这么解释的

 

伪类:用于向某些选择器添加特殊的效果
伪元素:用于将特殊的效果添加到某些选择器

 

    (3)详细解析:

           【1】伪类:

            首先来说下伪类,CSS 伪类用于向某些选择器添加特殊的效果。它并不改变任何DOM内容。只是插入了一些修饰类的元素,这些元素对于用户来说是可见的,但是对于DOM来说不可见。伪类的效果可以通过添加一个实际的类来达到 。例如我们常见的几个超链接伪类

a:link {color: #FF0000}      /* 未访问的链接 */
a:visited {color: #00FF00}   /* 已访问的链接 */
a:hover {color: #FF00FF} /* 鼠标移动到链接上 */
a:active {color: #0000FF}    /* 选定的链接 */ 
            小结:由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

 

          【2】伪元素:

           接下来说下伪元素,简单来说,伪元素创建了一个虚拟容器,这个容器不包含任何DOM元素,但是可以包含内容。另外,开发者还可以为伪元素定制样式。

           ::before和::after这两个主要用来给元素的前面或后面插入内容,这两个常用”content”配合使用,见过最多的就是清除浮动。

.clearfix::after{
    content: '.';
    diaplay:block;
    width: 0;
    height:0;
    visibility: hidden;
}
.clearfix:after {clear: both;}
.clearfix {zoom: 1;}//zoom(IE转有属性)可解决ie6,ie7浮动问题 

 

    (4)通俗解析

    这个区别我们需要一个例子来理解

 

<p>
    <em>This</em>
    <em>is a text</em>
</p>

 

  

    如果我们想要第一个em标签字体颜色变红怎么做呢 ???使用我们熟悉的伪类很简单

 

em:first-child {
    color: red;
}

 

   

    但是如果不存在伪类我们怎么做呢???这是我们就需要为第一个em标签添加类

<p>
    <em class="first-child">This</em>
    <em>is a text</em>
</p>
em.first-child {
    color: red;
}

   可以实现同样的效果

<p>
    <em>This</em>
    <em>is a text</em>
</p>

   还是这个例子 。现在我想让这个段落的第一个字母变红 ,怎么做呢 ???
   这回我们需要使用伪元素

p::first-letter {
    color: red;
}

   

    同样假设伪元素不存在的情况 ,这时我们只能嵌套span标签来实现

<p>
    <em><span>T</span>his</em>
    <em>is a text</em>
</p>
p span {
    color: red;
}

    看到这里,相信大家已经清楚了为什么一个叫做伪类,一个叫做伪元素 。伪类的效果可以通过添加实际的类来实现 ,伪元素的效果可以通过添加实际的元素来实现 。它们的本质区别就是是否抽象创造了新元素

 

常用伪元素

:first-letter:向文本的第一个字母添加特殊样式。 
:first-line: 向文本的首行添加特殊样式。 
:before:在元素之前添加内容。  
:after:在元素之后添加内容。  
::placeholder:匹配占位符的文本,只有元素设置了placeholder属性时,该伪元素才能生效。
::selection:CSS伪元素应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分)  
::backdrop(处于试验阶段):用于改变全屏模式下的背景颜色,全屏模式的默认颜色为黑色。该伪元素只支持双冒号的形式 

 

.

分享到:
评论

相关推荐

    伪类、伪元素实例

    https://mp.csdn.net/postedit/88689169 伪类选择元素基于的是当前元素处于的状态,或者说是元素当前所具有的...伪元素是对元素中特定内容进行操作的,它所操作的层次比伪类更深一层,也因此它的动态性比伪类要低很多。

    css伪元素 长方体 css伪元素 长方体

    css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪元素 长方体css伪...

    CSS按钮与伪元素

    在网页设计中,CSS(Cascading Style Sheets)是一种用于控制网页元素呈现样式的语言,而按钮和伪元素是CSS中的重要概念。本教程将深入探讨如何利用CSS来设计美观且功能丰富的按钮,并介绍伪元素在其中的作用。 ...

    css-div的border属性使用&伪元素伪类.docx

    在CSS中,`div`元素是最常用的块级元素之一,常用于布局和内容容器。`border`属性是CSS中用于定义元素边框样式的属性,包括`...需要注意的是,伪元素和伪类的使用应该遵循语义化原则,以确保代码的可读性和维护性。

    第37章 伪类选择器以及伪元素

    总结来说,伪类选择器和伪元素是CSS中强大的工具,可以帮助开发者精确控制网页元素的样式,提高用户体验。熟练掌握它们,可以使你的网页设计更加精细和动态。通过不断实践和探索,你将能够创建出富有交互性和视觉...

    CSS伪类集合

    通过使用这些伪类,开发者能够针对元素的不同状态或者上下文环境应用特定的样式规则。这种机制极大地增强了CSS的表现力和灵活性。 #### 二、伪类的基本语法 伪类的基本语法形式如下: ```css selector:pseudo-...

    CSS伪类和伪元素的区别详解

    这里用伪类 :first-child 和伪元素 :first-letter 来进行比较。 复制代码代码如下: p&gt;i:first-child {color: red}&lt;p&gt; &lt;i&gt;first&lt;/i&gt; &lt;i&gt;second&lt;/i&gt;&lt;/p&gt;  //伪类 :first-child 添加样式到第一个子元素如果

    第39章 UI元素状态伪类选择器

    在本章中,我们将深入探讨UI元素状态伪类选择器这一关键CSS概念,它是构建响应式和交互式用户界面的核心工具。伪类选择器允许我们根据元素的不同状态来应用特定的样式,使得网页的视觉反馈更加直观和动态。 首先,...

    位类和伪元素和选择器

    其中,位类、伪元素和选择器是CSS中的关键概念,它们共同构建了丰富的样式规则,帮助开发者实现精确的页面布局和设计。下面我们将深入探讨这三个概念。 首先,位类(Class)是CSS中用于标识一组具有相同样式特征的...

    [CSS] 用伪元素:after实现分割线和气泡

    本话题将深入探讨如何利用`:after`伪元素来实现分割线和气泡效果。 首先,让我们理解`:after`的基本语法。`:after`伪元素紧跟在选择器后面,然后使用一对花括号 `{}` 包裹内容。内容可以是文本、图像或者任何其他可...

    伪类和伪对象

    让我们深入探讨一下伪类和伪对象的区别与应用。 首先,我们来谈谈**伪类**。伪类是用于表示元素在特定时刻或状态下的一种特殊选择器。它们通常用来改变元素在用户交互时的外观,如鼠标悬停、被点击或激活等状态。...

    提升你的CSS技能:深入理解伪类选择器和伪元素选择器

    伪类选择器 提升你的CSS技能:深入理解伪类选择器和伪元素选择器

    权重,浮动,精灵,部分伪类伪元素示例

    在压缩包中的"share"文件可能包含了关于这些概念的代码示例、讲解和演示,通过学习和实践这些示例,你可以更好地理解并掌握CSS中的权重计算、浮动布局、精灵图的使用以及如何利用伪类和伪元素来增强页面的交互性和...

    浅谈CSS伪类与伪元素

    伪类伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态...

    HTML5选择器和伪元素----学习分享

    HTML5是现代网页开发的核心,它引入了许多新特性,其中包括增强的选择器和伪元素功能。这些新工具使得开发者能够更加精确地控制文档的样式和结构,提高了代码的可读性和维护性。本文将深入探讨HTML5选择器和伪元素的...

    CSS伪元素:after:before的特殊用法demo

    在这个特定的示例中,我们关注的是CSS中的两个重要概念:伪元素`:after`和`:before`。这两个伪元素允许我们在不添加额外HTML标记的情况下,向元素的内容中插入内容。 `:after`和`:before`伪元素在CSS3中被引入,...

    CSS:CSS伪类与伪元素教程.docx

    CSS:CSS伪类与伪元素教程.docx

    CSS中的伪类

    CSS 中的伪类是已经系统定义好的,它们可以用来设置 HTML 元素在不同的状态下的样式。下面是常见的伪类: 1. link 伪类:设置 a 对象在未被访问前的样式。例如:alink { font-size: 14pt; text-decoration: ...

    css3 transitions和伪元素制作4种超酷鼠标经过hover动

    在本文中,我们将深入探讨如何使用CSS3的transitions和伪元素来创建四种独特的鼠标经过(hover)动画效果。这些效果包括滴水效果、圆心放大、旋转放大以及飞翔的独眼怪。CSS3作为现代网页设计的重要工具,提供了一...

Global site tag (gtag.js) - Google Analytics