css中什么是伪类和伪元素?

html-css010

css中什么是伪类和伪元素?,第1张

伪类一开始单单只是用来表示一些元素的动态状态,典型的就是链接的各个状态(LVHA)。随后CSS2标准扩展了其概念范围,使其成为了所有逻辑上存在但在文档树中却无须标识的“幽灵”分类。

伪元素则代表了某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

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

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

这是两个完全不同的概念,只是名字类似。

类是class的意思,你给一个元素添加了class,就是给这个元素添加了一个类。之所以这样称呼,是因为class可以重复利用。比如你给一个ul下的奇数的li加了一个odd的class名称,给偶数的li加了一个even的class,然后一个给红色背景,一个给蓝色背景,这样,明显就把li分成了两类。甚至一个网页、一个网站都可以出现一个class通用的情况。

伪类是:也可以用来区分元素,但是都是按顺序来的。写法是前面有个冒号。比如css3的first-child、last-child等,这个都是新版本的css才有的,低版本的IE是不能用的,如IE8。

总结一下:类其实就是给某个或者某些元素起一个名字,进而控制这个或者这个元素;伪类是按顺序来选择某些元素的,这个结果是动态的,比如第一个,最后一个,奇数行什么的。另外,因为伪类是添加在元素后面的,而类就是选择元素用的,所以类后面可以跟伪类进行使用的,这就更高级了。

另外,伪类还有一些特殊的,比如a标签的四个伪类,还有::after和::before(这两个的用法简直神奇,这俩货简直就是神器)。这些参考http://www.w3school.com.cn/这个网站吧。

css的伪类和伪元素在我们平常的工作中有着很广泛的应用,比如:hover、:active、:after等等,但是大部分人可能并不清楚伪类和伪元素的具体区别,所以我们今天来简单的梳理一下。 css伪类的定义 由于css2.1中伪类和伪元素的定位并无区别,所以我们直接引用css3中对于伪类的定义(引入来源w3c)定义:引入伪类概念是用于选择不存在于DOM树中的信息或那些不能够通过常规css选择器得到的信息。(比如:hover,:active就属于不在于dom中的信息,nth-child()属于不能够通过常规css选择器得到的信息) 伪类由“冒号”(:)+伪类的名称和伪类括号内的可选参数组成。(伪类括号内的可选参数指:nth-child(n)里的n) 所有的常规选择器都可以在任何位置使用伪类。伪类名称不区分大小写。一些伪类是互斥的,另一些伪类可以同时应用于同一个元素。为了满足用户在操作DOM时产生的DOM结构改变,伪类可以是动态的。 css伪元素的定义定义:伪元素用于创建和访问文档中不存在的抽象元素。例如,文档语言不提供访问元素内容的第一个字母或第一行的机制。使用伪元素可以访问到这些。伪元素还可以让我们访问文档中原本不存在的抽象元素(例如,::before和::after)。 伪元素由两个冒号(::)后跟伪元素的名称组成。 ::两个冒号这种格式,是为了区别伪类和伪元素。与现有样式表的兼容性,考虑到兼容性有部分伪元素可以同时使用1个或者2个冒号,(即:first-line,:first-letter,:before和:after)。对于css3中引入的新伪元素,则必须要使用2个冒号。 每个选择器只能出现一个伪元素,并且伪元素要位于选择器的后面。注意:此规范的未来版本可能允许每个选择器使用多个伪元素。 css伪类和伪元素的区别 伪类和伪元素的语法结构不同,伪类为冒号(:)加伪类名称,伪元素为两个冒号(::)加伪元素名称,不过为了考虑兼容性(css2.1中伪类和伪元素都是一个冒号),部分伪元素也支持一个冒号的写法,例如(:after,:before,:first-line,:first-letter)。 一个选择器只能使用一个伪元素,但是可以使用多个伪类。 伪类和伪元素的优先级不同,大部分伪类为0-1-0,伪元素则为0-0-1。参考 css选择器的优先级 https://www.chentugen.com/archives/12/