案例分析
.transition { /*渐进增强写法*/
-webkit-transition: all .5s;
-moz-transition: all .5s;
-o-transition: all .5s;
transition: all .5s;
}
.transition { /*优雅降级写法*/
transition: all .5s;
-o-transition: all .5s;
-moz-transition: all .5s;
-webkit-transition: all .5s;
}
前缀CSS3(-webkit-* / -moz-* / -o-*)和正常CSS3在浏览器中的支持情况是这样的:
- 很久以前:浏览器前缀CSS3和正常CSS3都不支持;
- 不久之前:浏览器只支持前缀CSS3,不支持正常CSS3;
- 现在:浏览器既支持前缀CSS3,又支持正常CSS3;
- 未来:浏览器不支持前缀CSS3,仅支持正常CSS3.
渐进增强的写法,优先考虑老版本浏览器的可用性,最后才考虑新版本的可用性。在时期3前缀CSS3和正常CSS3都可用的情况下,正常CSS3会覆盖前缀CSS3。优雅降级的写法,优先考虑新版本浏览器的可用性,最后才考虑老版本的可用性。在时期3前缀CSS3和正常CSS3都可用的情况下,前缀CSS3会覆盖正常的CSS3。
就CSS3这种例子而言,我更加推崇渐进增强的写法。因为前缀CSS3的某些属性在浏览器中的实现效果有可能与正常的CSS3实现效果不太一样,所以最终还是得以正常CSS3为准。如果你好奇究竟是什么属性在前缀CSS3和正常CSS3中显式效果不一样,可以看看这篇文章《需警惕CSS3属性的书写顺序》。