5.3 私有前缀及其用法
在CSS3模块标准尚未被W3C批准或者标准所提议的特性尚未被浏览器完全实现时,浏览器厂商会使用所谓的私有前缀来测试“试验性的”CSS特性。这样,浏览器设计者实现了CSS3的新模块,但对使用CSS3的开发者来说则很繁琐。看看CSS3中实现圆角的代码:
你可以看到一组私有前缀属性(这个列表还不是很全面),每一个都有其独有的前缀字符串,如-webkit-是针对Webkit核心浏览器,-ms-是微软的私有前缀所以针对的是Internet Explorer,等等。CSS的工作方式是浏览器逐行下载样式表,应用其可识别的属性,忽略其无法识别的属性。
此外,样式表中后出现的属性优先级高于之前出现的同名属性。正是由于这种层叠,我们就可以先列出私有前缀属性,最后使用无前缀的属性来修正,以确保当该特性被完全实现时,浏览器会运行正确的效果,而不是之前的特定浏览器的试验性效果。
可快速编辑CSS3前缀的代码片段和JavaScript方案
建立包含所有必需的私有前缀属性的代码片段会带来极大便利。这样你就可以直接粘贴代码而不用每次都重新输入。很多代码编辑程序(或者集成开发环境)带有代码片段功能,这样在开发CSS3时能节省很多时间。也有可以为CSS文件自动追加前缀的JavaScript方案,比如“-prefix-free”,很不错的解决方案,网址是http://leaverou.github.com/prefixfree/。
挨个列出每一种私有前缀是最理想的做法,但实际开发中很少有人那样做。相反,他们要么只指定自己期望的浏览器,要么在编写规则之前已经检查过哪些浏览器支持该特性。例如,你可以仅写如下代码:
这样写会覆盖Firefox、Chrome和Safari,以及任何已经完全实现了该规则的浏览器。
我知道你在想什么,对同一个属性写多个私有前缀声明是否会造成代码臃肿?确实会有那么一点。但无论追加多少前缀属性,相对于图片而言,这仍然是一个更加快速、优雅且健壮的解决方案。
在讨论网站应用之前,最好先看看当前浏览器使用率的分布情况。这样做会让我们对支持哪些浏览器更胸有成竹。例如,如果时间和预算都很紧张,你可能会决定不对任何在你的网站上使用率小于3%的浏览器提供私有前缀支持。此时你需要根据一组数据来做判断。
现在我们知道了前缀的来源,以及如何在规则中应用它。接下来我们看一些快速而有效的CSS3技巧。
什么时候可以使用特定的CSS3和HTML5特性?
随着对CSS3研究的不断深入,我衷心建议大家去看看这个网站http://caniuse.com,在这里你可以知道当前浏览器对特定CSS3和HTML5特性的支持程度。除了显示浏览器的特性支持情况之外(可按特性搜索),它还提供了来自于http://gs.statcounter.com的最近的全球浏览器使用率统计。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论