前言
昨天被面试官给问到了,因为这个问题本身我就不是很清楚,所以今天赶紧查了查。
区别
所谓伪类,就是作用在元素本身,可以像类一样使用,往元素上面添加样式。
所谓伪元素,就是相当于创建了一个新的元素,把所选内容放在了这个元素里面,并且为这个元素添加样式。
注意:伪元素中新建的那个元素其实display为inline的元素,这就是为什么我们用::after清除浮动的时候需要写上display:block;的原因
常见的伪元素有:after,before,first-line,first-letter等
常见的伪类有:hover,active,first-child,visited,focus,link等
再举个例子吧
例如说first-child和first-line吧
first-child的话本身选的就是元素,所以不需要再为其创建一个新元素进行包裹,只需为元素本身进行添加样式就可以。
但是first-line就不一样了呢,它只是选中第一行,这一行并没有被一个确切元素包裹,而是和其他行一样包裹在一个容器中,所以需要为其创建一个新元素。
目前我的理解就是酱紫的。
能不能添加点击事件
还有个问题:就是伪元素能不能进行绑定点击事件?
嗯,这个也是不可以的,因为它并不是真正的dom元素,他只是为了添加一些特殊的效果,用javascript获取不到它们。