CSS3中有一些功能还在开发中,还没有制定统一标准达到使用的目的。对于这些属性,不同浏览器有不同的实现标准,因此对于不同的浏览器内核,必须在这些没有统一标准的属性名前加上前缀来进行区分。
以下是目前各主流浏览器内核的前缀:
前缀 | 内核 | 主流浏览器 |
-ms- | Trident | IE |
-moz- | Mozilla | Firefox |
-o- | Presto | Opera |
-webkit- | Webkit | Safari, Chrome |
注:
例如使用CSS3的transition属性时,要使这个属性在各浏览器上起作用就必须重复写上不同前缀的版本。
-webkit-transition: all 0.4s ease-in-out;
-moz-transition: all 0.4s ease-in-out;
-o-transition: all 0.4s ease-in-out;
-ms-transition: all 0.4s ease-in-out;
transition: all 0.4s ease-in-out;
注:在有前缀的语句写完后,最好在最后面写上一个无前缀的版本。当标准制定完成后,在后面属性值会替换掉前面带有前缀的版本,保证你的页面能够使用该属性的W3C标准。
在以下网址可以查看CSS3的开发进度,其中达到Recommendation的就是已经成熟可以投入使用中了:http://www.w3.org/Style/CSS/current-work
以下网址可以查看各浏览器内核前缀的支持情况:http://peter.sh/experiments/vendor-prefixed-css-property-overview/
之所以要加前缀是因为这些属性还处于开发状态,如果不使用,那么在某些浏览器中可能导致你的页面出现无法理解的问题。使用前缀可以让你指定哪些浏览器可以使用这个属性,虽然现在编写起来不方便(同一语句要写上几遍),但相信这种痛苦也只是暂时的。在不久的将来,当标准制定完成后,这些前缀理所当然的可以将其去除,当然也可以不去改变它,到时一样能够起到原来的作用。