为什么会有浏览器前缀?

一开始学习CSS3的时候看到一个属性前面加一些莫名其妙的东西,后来发现这是浏览器前缀,居然要用四五行代码来完成实际上相同的一件事。对此,我的感受只是:烦躁,烦躁,烦躁

后来经过深入学习,不仅仅只是在网上看视频或者学习资料,而且自己去图书馆借了一些前端的书来看才发现这件令我烦躁的事还是有很多好处的。

当一个浏览器实现一个新的属性、值或者选择器,而这个特征还不是处于候选推荐标准状态的时候,这属性的前面会添加一个前缀以便于它的渲染引擎识别。

*在Presto渲染引擎中,对话(Speech)相关的属性前缀是-xv-而不是-o-。

为什么他们会存在

浏览器使用前缀来尝试一些新属性、值和选择器,即使他们还没有最终定稿——这是一个好的测试方法,在必要时也可以对他们进行修正或者重新定义。如果浏览器一上来就直接使用标准属性,那他们就会被直接锁定在这个特征的实现上而不易变更。

开发这可能会立即使用无前缀的属性,而且也会一直期望它能够保持同样的表现不再变更。如果浏览器在之后对这个属性做了变更,不管是由于它的实现存在缺陷,或者是由于规范本身发生了变更,所有现存的使用了这个属性的网站都有可能面临出问题的风险。除了会出现这样的锁定问题外,这种方式也有可能强迫其他浏览器和W3C去适配它的实现。

即使浏览器不会变更它的实现从而不去影响现有的网站,W3C如果改变了它的规范定义怎么办?如果其他的浏览器直接使用更新的规范中的新表现该怎么办?

有前缀的属性会告知开发者这个属性只是试验性质的而且很有可能变更。他给予浏览器在必要时进行变更的灵活性,这让浏览器能够更快地发布或者重新定义新的属性。这也让开发者能够更快地有机会尝试新的属性,并且能够参与到在真实环境下测试和修订这些特征的过程。

一旦规范开始稳定下来,浏览器也达到了能够正确实现属性的程度,他就可以去除这个前缀。如果开发者在样式表中同样提供了无前缀的属性定义——这是很好的向后兼容的方式——那么开发的页面就能够自适应最终定义完成的特征。如果开发者没有这样做,那这些页面也不会受到影响——旧有的前缀属性还是能够正常工作。没有任何一个使用前缀的网站会发生问题。

对学习,还是只有书能让我专心

网上的资料很多,很多的含义也就意味着很杂,很凌乱,难得系统。网上讲的很多是知识点,也基本只能是知识点,因为网上的视频大部分急于求成,使人知其然难知其所以然,在网上讲课的老师很少讲编程思想,很少讲一个问题的来龙去脉,只是教我们如何实现,很少涉及为什么以及它的原理。我只是觉得书上的知识理论更系统些。

学前端,我是从网上入门,在书中进阶。

                                                  Zoe Mickley Gillenwater《CSS3实用指南》 读书笔记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 作者:陈春梦 当你竭尽所能却只能铩羽而归/ 当你深爱某人最后却苦心煞费/ 当你不胜疲惫却又无法入睡/ 当你遗憾错失...
    脱缰犀牛港阅读 620评论 0 2
  • 雨渐悉微,风日清美,吾时独游,至纯阳观。正门对,熙熙攘攘,人来轩往。进,叹,闹中取静,别开玄境。首映眼帘,纯阳殿也...
    咸极咸阅读 732评论 0 0
  • 前一段时间 SHA-1 算法被破解了,大家都在说这个算法太危险了,其实并不是想象的那样,简单的结论就是应该正确的认...
    虞大胆的叽叽喳喳阅读 2,217评论 0 3