【CSS3】详解伪元素与伪类

1.伪类

伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

伪类的定义:

(1)伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息。

(2)伪类由一个冒号:开头,冒号后面是伪类的名称和包含在圆括号中的可选参数。

(3)任何常规选择器可以在任何位置使用伪类。伪类语法不区别大小写。一些伪类的作用会互斥,另外一些伪类可以同时被同一个元素使用。并且,为了满足用户在操作DOM时产生的DOM结构改变,伪类也可以是动态的。

i:first-child {color: red}
<p>
    <i>first</i>
    <i>second</i>
</p>

不用伪类,希望达到上述效果,直接添加类:

.first-child {color: red}
<p>
    <i class="first-child">first</i>
    <i>second</i>
</p>

而使用伪元素:first-letter,第一个字母:

p:first-letter {color: red}
<p>I am stephen lee.</p>

如果想要达到上述效果,我们可以这样做:

p:first-letter {color: red}
<p><span>I<span> am stephen lee.</p>

给I添加span标签才能达到这种效果,有时自己干想想不出区别,还得亲自动手,现在比较清楚伪类和伪元素的区别了。

2.伪元素

与伪类针对特殊状态的元素不同的是,伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文档中,所以叫伪元素。

伪元素的定义:

(1)伪元素在DOM树中创建了一些抽象元素,这些抽象元素是不存在于文档语言里的(可以理解为html源码)。比如:documen接口不提供访问元素内容的第一个字或者第一行的机制,而伪元素可以使开发者可以提取到这些信息。并且,一些伪元素可以使开发者获取到不存在于源文档中的内容(比如常见的::before,::after)。

(2)伪元素的由两个冒号::开头,然后是伪元素的名称。

(3)使用两个冒号::是为了区别伪类和伪元素(CSS2中并没有区别)。当然,考虑到兼容性,CSS2中已存的伪元素仍然可以使用一个冒号:的语法,但是CSS3中新增的伪元素必须使用两个冒号::

(4)一个选择器只能使用一个伪元素,并且伪元素必须处于选择器语句的最后。

时间: 2024-12-08 23:50:23

【CSS3】详解伪元素与伪类的相关文章

伪元素和伪类区别

伪类用于向某些选择器添加特殊的效果. 伪元素用于将特殊的效果添加到某些选择器. 伪类有::first-child ,:link:,vistited,:hover,:active,:focus,:lang 伪元素有::first-line,:first-letter,:before,:after 使用伪类: 1 2 3 4 5 6 7 <style> p>i:first-child {color: red} </style> <p>     <i>fir

伪元素与伪类

伪元素与伪类 为什么要写这篇文章? 伪元素和伪类一直都是很容易混淆的,没有大量的实践和用心去体会是不容易记住的.我相信对于绝大部分新手来说是这样的,我自己也是经常记不住,像这样不算难的问题,一直查阅别人的博文,没有点自己的思想,好像是很low的一件事,因此写下这篇文章. 什么是伪类? 伪类的实质是把某种幻像类关联到与伪类相关的元素上,举个例子: <div> <p>These are the necessary steps:</p> </div> 使用规则  

CSS的伪元素和伪类

css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类-- :hover, :active, :visited, :focus. 常见伪元素--::first-letter,::first-line,::before,::after,::selection. ::before和::after下特有的content,用于在css渲染中向元素逻辑上的头部或尾部添加内容(可以是文字,图标等,下图就是一个正方形图标,图标是通过css绘制的). 这些添加不会出现在DOM中,不会改变文档内容,不可复

伪元素、伪类基础理解

前几天同事问我css中单冒号和双冒号是什么意思,我也模糊得很,只有个笼统的概念就是:伪元素和伪类.一直以为,页面布局中很少使用到伪类,结果细细研究发现我们经常使用的hover就是一个最简单的伪类,顿时觉得自己太OUT了,紧跟着这两天都在看这些东西,其实伪类最简单的理解就是用于向某些选择器添加特殊的效果. 具体伪类.伪元素有哪些我就不一一列举,在w3c中列举的很清楚.我主要写写应用的实例. 1.来个简单的,咱们最常用到的向超链接添加不同的颜色: <html> <head> <m

XStream 用法详解 XML 转换为 java 实体类

XStream 用法详解 java 类与 XML 互换 现在 WEB数据交换的时代,传送XML目前是一个比较流行的方式,具有统一的规则约束,为实现后台接口提供了一个很方便的实现. 我编写了一个 接收XML并转换成所需要的Object类的 小例子,希望能够对做互联网数据传输.接口调用的朋友有所帮助. 首先要导入jar包xstream-1.4.3-sources.jar 和 xmlpull-1.1.3.1.jar 两个包: 其次是预备一个 XML 事例 <config> <span styl

CSS3伪元素、伪类选择器

伪元素选择器: ::first-letter:为某个元素中的文字的首字母或第一个字使用样式. ::first-line:为某个元素的第一行文字使用样式. ::before:在某个元素之前插入一些内容. ::after:在某个元素之后插入一些内容 ::selection:匹配元素中被用户选中或处于高亮状态的部分. 伪类选择器: :link:未访问的链接. :visited:已访问的链接. :hover:鼠标移动到链接上. :active:选定的链接.   原文地址:https://www.cnbl

伪元素和伪类

相同:都用于给某些选择器添加特殊的效果区别:伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因.下面罗列写常见的伪类与伪元素--伪类种类:伪元素种类:CSS3要求对伪元素使用两个冒号以便与伪类进行区别.但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者.

伪元素和伪类的区别

CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 区别:伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因. 伪类种类 伪元素种类 区别 这里用伪类 :first-child 和伪元素 :first-letter 来进行比较.

一句话让你明白伪元素和伪类的区别

伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到. 下面就这句话给出例子 伪类 :first-child <div> <p>我是一个段落</p> <p>我是一个段落</p> <p>我是一个段落</p> <p>我是一个段落</p> <p>我是一个段落</p> <div> 使用伪类选出第一个段落 div p:first-ch