前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus、:hover以及<a>标签的:link、:visited等,伪元素较常见的比如:before、:after等。
在这里也许有不少人都见过:before,::before这样的写法,估计有些人很纳闷,这两者有什么区别吗?
有疑问,那我们就先把疑问解决了先,不要把疑问留着。其实:before,::before这两种写法都是等效,只是:befor是CSS2的写法,::before是CSS3的写法。双冒号(::)这是CSS3 规范中的要求,目的是为了区分伪类和伪元素,大多数浏览器都支持这两种表示方式。单冒号(:)用于 CSS3 伪类,双冒号(::)用于 CSS3 伪元素。对于 CSS2 中已经有的伪元素,例如 :before,单冒号和双冒号的写法 ::before 作用是一样的。一般情况下为兼容性考虑使用单冒号(:)。
解决完疑问,那我们就可以愉快的开始接下来的内容了。
伪类 - pseudo classes伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息(例如<a>标签的:link、:visited等,这些信息不存在与DOM树结构中,只能通过CSS选择器来获取)以及不能被常规CSS选择器获取到的信息(例如要修改第几个子元素的样式)。
伪类的语法:
selector : pseudo-class {property: value}