使用CSS3的供应商特定前缀的性能和DOM加载
Performance and DOM Loading using vendor specific prefixes for CSS3
我对此很好奇。
css3属性尚未标准化,但可以通过浏览器实现,使用特定浏览器的前缀。例如,可以使用border-radius,它在现代浏览器上运行良好。然而,对于以前版本的浏览器供应商,我们可以使用供应商特定的属性,如-moz、-webkit等前缀来工作。
现在,对于我的页面,我已经使用了渐变和边界半径,创建了几个使用它们的类,并通过t应用了这些类。
以下哪项更好?
-
使用javascript来查找是否存在支持,如果支持,则使用属性;如果上面的属性为false,则检查用户代理并相应地应用特定于供应商的属性。
-
使用类中的所有浏览器前缀,并让浏览器使用适合它的前缀。
我好奇和关心的是DOM加载的性能和时间。
以下哪项更好?
使用javascript来查找是否存在支持,如果支持,则使用属性;如果上面的属性为false,则检查用户代理并相应地应用特定于供应商的属性。
使用类中的所有浏览器前缀,并让浏览器使用适合它的前缀。
选项1包括使用JavaScript检测支持,然后有条件地写出带有或不带有前缀的CSS代码,并让浏览器应用样式。
选项2包括简单地使用CSS,并依靠浏览器忽略它不理解的前缀/声明。
正如您所看到的,选项1引入了一个额外的层(JavaScript),如果您只是想在可能的情况下使用一些CSS3功能,那么这是不必要的选项2将是性能最高的解决方案
对于这类问题,答案是-取决于情况。这取决于你使用的前缀,它们在HTML中出现的频率,你测试的浏览器,等等
解决方案是编写代码,对其进行评测,然后找出答案。很多时候,你会发现无论哪种方式,性能都是可以接受的。
我使用选项2-将所有浏览器前缀(以及无前缀版本)添加到CSS:
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
浏览器将跳过他们不理解的声明,而不会出现任何问题(尽管CSS不会验证),同时仍然应用样式。最好使用CSS生成器来避免键入每个前缀。
您应该避免使用Javscript来检测CSS特性,因为这打破了关注点的分离——CSS用于表示,Javascript用于行为。
- Javascript性能-在dom上迭代并添加侦听器
- 样式 DOM 上的 $.before() 性能问题
- 在大型DOM上使用jQuery .nextTil的性能
- 性能问题:存储对DOM元素的引用与使用选择器相比
- Web应用程序性能:SVG、Canvas或Dom Manipulation
- 获取DOM元素的性能差异
- 更多的 DOM 元素会产生性能问题
- 为什么 DOM 读/写操作的微小重新排序会导致巨大的性能差异
- 向 DOM 添加一个简单的图像标记,而不是使用 GWT 控件以获得更好的 JS 运行时性能
- Javascript DOM与XSLT转换的性能对比
- 由于大量dom元素导致的性能问题
- 数百个DOM元素的JavaScript事件侦听器性能
- 如何使用jquery在大的dom中获得良好的性能
- 使用CSS3的供应商特定前缀的性能和DOM加载
- 为DOM深处的元素设置动画真的会影响性能吗
- IE8中的jQuery和DOM操作性能问题
- 当DOM中的元素太多时,Angular的ng类会出现性能问题
- 响应式Web设计中DOM操作的性能
- 在jQuery初始化之前进行条件DOM检查的性能
- DOM内脚本和样式的性能优势