zoukankan      html  css  js  c++  java
  • CSS 属性

    • CSS 伪类用于向某些选择器添加特殊的效果。
    • CSS 伪元素用于将特殊的效果添加到某些选择器。

    可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果。这里特殊指的是两者描述了其他 css 无法描述的东西。

    伪类种类

    伪元素种类

    区别

    这里用伪类 :first-child 和伪元素 :first-letter 来进行比较。

    p>i:first-child {color: red}
    <p>
        <i>first</i>
        <i>second</i>
    </p>

    //伪类 :first-child 添加样式到第一个子元素
    如果我们不使用伪类,而希望达到上述效果,可以这样做:
    .first-child {color: red}
    <p>
        <i class="first-child">first</i>
        <i>second</i>
    </p>
    

     即我们给第一个子元素添加一个类,然后定义这个类的样式。那么我们接着看看为元素: 

    p:first-letter {color: red}
    <p>I am stephen lee.</p>
    

     //伪元素 :first-letter 添加样式到第一个字母

    那么如果我们不使用伪元素,要达到上述效果,应该怎么做呢?

    .first-letter {color: red}
    <p><span class='first-letter'>I</span> am stephen lee.</p>
    

    即我们给第一个字母添加一个 span,然后给 span 增加样式。
    两者的区别已经出来了。那就是:

    伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。

    总结

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

    :Pseudo-classes
    ::Pseudo-elements
    

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

    伪元素由双冒号和伪元素名称组成。双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存在的伪元素写法,比如:first-line、:first-letter、:before、:after等,而新的在CSS3中引入的伪元素则不允许再支持旧的单冒号的写法。

    那么现在就可以完整的回答标题中的问题了,对于CSS2之前已有的伪元素,比如:before,单冒号和双冒号的写法::before作用是一样的

    所以,如果你的网站只需要兼容webkit、firefox、opera等浏览器,建议对于伪元素采用双冒号的写法,如果不得不兼容IE浏览器,还是用CSS2的单冒号写法比较安全。

    转自:http://segmentfault.com/a/1190000000484493
  • 相关阅读:
    1081. Rational Sum (20) -最大公约数
    在Debug模式下中断, 在Release模式下跳出当前函数的断言
    net-snmp配置文件详解
    net-snmp5.7.3移植到arm-linux平台
    NET-SNMP开发——日志输出
    SNMP常用数据操作
    40 网络相关函数(八)——live555源码阅读(四)网络
    39 网络相关函数(七)——live555源码阅读(四)网络
    38 网络相关函数(六)——live555源码阅读(四)网络
    37 网络相关函数(五)——live555源码阅读(四)网络
  • 原文地址:https://www.cnblogs.com/waisonlong/p/5033560.html
Copyright © 2011-2022 走看看