美文网首页css 相关@IT·互联网
通俗讲css的浏览器前缀

通俗讲css的浏览器前缀

作者: FoolishFlyFox | 来源:发表于2017-05-25 16:44 被阅读77次

    为何对于有的css属性要加上-webkit、-o等前缀

    例如:

    div
    {
      -webkit-border-image:url(border.png) 30 30 round; /* Safari 5 */
      -o-border-image:url(border.png) 30 30 round; /* Opera */
      border-image:url(border.png) 30 30 round;
    }
    

    解释:这些前缀称为浏览器引擎前缀(vendor prefix),这些前缀是为了实现浏览器兼容;很抽象是吧,举个具体的栗子吧:

    w3c说css中要加个font-color属性,用于指定文本的边框颜色,但是 ,这个font-color属性目前只是个草案噢,能不能成为标准还不一定;</br>

    浏览器A老实巴交的在渲染器中实现了该功能,而浏览器B比较狡猾,不实现font-color属性,而实现了B-font-color属性,公司X通过了解后写了以下代码:

    #mytext{
      B-font-color:red; /*在B浏览器中文字显示红色边框*/
      font-color:red; /*在A浏览器中文字显示红色边框*/  
    }
    

    写好以后,前端开发和浏览器厂商都很happy啊,不错,达到了预期目的;就这样平安无事的过了n年;</br>

    n年后,w3c认为,在草案中将font-color设为文字的边框不合理,所以最终的标准将font-color设为了文字的颜色;既然成为标准了,那么,以后的前端程序员和浏览器都必须按标准来;</br>

    浏览器B不紧不慢的在其渲染引擎中添加了font-color属性,而A就有点尴尬了,已经实现了了font-color功能,怎么办,只能改呗,A就对外宣布,以后font-color属性不再代表文字边框颜色,改为字体颜色;</br>

    这一改,公司X不干了,说好的边框红色,怎么在A上运行时给我去掉了,严重影响了我界面的美观,谴责!从此,A浏览器渐渐衰弱下去;</br>

    你也可能说,不对啊,由于w3c新标准的发布,B的字体颜色也变了啊,为啥不谴责它呢,这是因为B没有去掉X公司原来有的样式,只是按照标准增加了效果,而这由于新标准带来的影响,你X公司要谴责就谴责w3c去,谁叫他不一开始就出台标准,而弄个草案呢,B窃喜,反正没我责任;</br>

    由此可见,浏览器前缀是浏览器厂商为了尽快实现草案中的内容,又为了以后的草案标准化而耍的“小聪明”;

    为何要把不带前缀的属性写在最后

    这是因为css属性具有后面属性覆盖前面属性的特性,例如:

      #mytext{
        background:red;
        background:green; /*mytext的绿色背景将覆盖红色背景*/
      }
    

    用户在草案期编写的代码,在w3c确定标准后,就能以最后的不带前缀的属性覆盖所有前面冲突的属性,实现自动的向标准看齐的作用;

    常用的前缀列表

    前缀名称 浏览器内核 浏览器
    -webkit Webkit Chrome、Safari
    -moz Gecko Firefox
    -o Presto Opera
    -ms Trident IE

    想了解浏览器内核的发展,请看--全面了解浏览器内核发展史

    相关文章

      网友评论

        本文标题:通俗讲css的浏览器前缀

        本文链接:https://www.haomeiwen.com/subject/hgjzxxtx.html