灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3407回复:0

在CSS中的伪类与伪元素

楼主#
更多 发布于:2011-10-02 15:23

今天在了解CSS优先级与继承相关概念的时候,接触到了这两个东东。之前看见类似:after的东东时,均会认为是伪类(Pseudo-classes),但是实际不然,在CSS2规范中对伪类(Pseudo-classes)以及伪元素(Pseudo-elements)实际做了不同的解释。
释疑
对于这种很纠结的问题,其实最好的答案就在规范里面,立马google出CSS2规范,里面果真具体定义了,请猛击这里查看。不过规范毕竟是规范,看了不让人晕就不叫规范了=,=
我仔细看了一遍又一遍还是不怎么能够解释得清他们直接的区别,so木有办法,只好硬记下了:first-line, :first-letter, :before, :after这几个就是伪元素,其余都为伪类~希望有DX可以帮忙具体总结总结两者差异吧,或者有时间再好好研读研读规范……
不过这里不得不赞一下CSS3的标准草案,里面终于把这两个概念从代码上做了区分,对于伪类的代码不变,但是对于伪元素,则使用两个::作为前缀,因此这样就很容易区分了,可以猛击这里查看。
为何这里如此纠结两者的区别呢?首先第一点是在计算一个选择器的优先级时,伪类和伪元素的权重是不同的,因此在比较细节的地方需要纠结;其次是伪类允许在选择器的任何位置,但是伪元素只允许出现在最后一个简单选择器的末尾(Pseudo-classes are allowed anywhere in selectors while pseudo-elements may only be appended after the last simple selector of the selector),在CSS3的草案中还提到,每个选择器中只允许出现一个伪元素,未来版本可能会允许多个(Only one pseudo-element may appear per selector, and if present it must appear after the sequence of simple selectors that represents the subjects of the selector.Note: A future version of this specification may allow multiple pseudo-elements per selector)
感受
确实,前端这潭水真是太深太深了,任何一个细小的地方都可以引发很多讨论。这时候规范确实是个好东东,虽然那玩意儿确实不是给普通人读的,只是遇到纠结问题去查阅查阅确实会很有收获滴~努力学习吧~

喜欢0 评分0
游客

返回顶部