欢迎访问生活随笔!

生活随笔

您现在的位置是:首页 > 形式科学 > 计算机科学 > IT网络

IT网络

CSS:之前& amp;:after的用法,伪类和伪元素的区别

发布时间:2022-11-24IT网络 小博士
one:: before && :after的用法
:之前
和伪元素的名字一样,:before用于在指定元素的内容之前插入新内容。示例:
.之前:之前{内容:

一::before && :after的用法

:before

如同对伪元素的名称一样,:before是用来给指定的元素的内容前面插入新的内容。举例说明:

.before:before{content:'you before'; color:red;} <div class='before'> me</div>

在这里我们给伪元素:before添加了属性content,并赋值为you before。我们来看效果:

CSS之 :before && :after的用法,伪类和伪元素的区别-风君子博客

//在指定元素的内容me前添加了新内容you before

我们不难发现这里通过伪元素:before添加的新内容区域默认的display属性值为inline,那么我们可不可以修改新内容区域的属性,答案是肯定的。你可以像修改其他元素一样修改它的样式,我们来将它的display属性值来改为block。

.before:before{content:'you before'; display:block; color:red;} <div class='before'> me</div>

现在我们再来看下效果:

CSS之 :before && :after的用法,伪类和伪元素的区别-风君子博客

//由伪元素:before生成新内容区域果然变为了块元素

content 属性

对于伪元素:before和:after而言,属性content是必须设置的,我们知道属性的值可以为字符串,也可以有其它形式,比如指向一张图片的URL:

content: url( 'img/icon.png' )

配合伪类使用

伪元素:before还可以配合伪类使用,这里举经常与:before配合使用的伪类:hover为例:

.before:hover:before{content:'you before'; color:red;} <div class='before'> me</div>

配合取值函数 attr() 使用

还有一种较为常见的用法,即配合取值函数attr()一起使用,如:

a::before{content: attr(title)} <a href='http://www.segmentfault.com' title='专业面向开发者的中文技术问答社区'></a>

这个达到的效果跟下面一样:

<a href='http://www.segmentfault.com'>专业面向开发者的中文技术问答社区</a>

:after

伪元素:after与 伪元素:before类型相同,只不过它指定的属性content值为出现在指定元素内容的后面,说明省。

二:伪类和伪元素的区别

伪类种类

CSS之 :before && :after的用法,伪类和伪元素的区别-风君子博客

伪元素种类

CSS之 :before && :after的用法,伪类和伪元素的区别-风君子博客

伪类:作用对象是整个元素

例如:

a:link {color:#111} a:hover {color:#222} div:first-child {color:#333} div:nth-child(3) {color:#444}

尽管这些条件不是基于DOM的,但结果每一个都是作用于一个完整的元素,比如整个链接,段落,div等等。

伪元素:作用于元素的一部分

例如:

p::first-line {color:#555} p::first-letter {color:#666} a::before {content : 'hello world';}

伪元素作用于元素的一部分:一个段落的第一行 或者 第一个字母。

总结:

伪元素其实相当于伪造了一个元素,例如before,first-letter达到的效果就是伪造了一个元素,然后添加了其相应的效果而已;

而伪类没有伪造元素,例如first-child只是给子元素添加样式而已。

伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿,但实际上css3为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。

但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。