CSS性能优化

css性能优化

  • CSS选择器性能
    对于整体的性能影响实际上主要体现在DOM渲染查找时的复杂度,比如嵌套要控制层数,规范化选择器的书写以及提高css代码的可维护性和健壮性。
    1.不必要的标签加选择器
//bad
ul#list-wrap {
    color: #ddd;
}

ul.list-container {
    color: #ccc;
}

//good
#list-wrap {
    color: #ddd;
}

  1. 不添加根元素
//bad 
html tr td {
    color: #ddd;
}

//good 
tr td {
    color: #ddd;
}
  1. 不在生产环境中使用通配选择器
  2. 拒绝成串的链式调用
.wrap.top.title {
    color: #000;
}

如果可以,直接将三个类名合并为短横线链接的单个类名

  1. 在必要时减少不必要出现的html标签
  2. 在需要给div等标签添加样式的时候,考虑是否有原生的标签自带样式
this is a bold line
div { font-weight: bold; } //good this is a bold line//可以直接替换掉原来的div
  1. 使用less或sass等css预处理器的时候,最高嵌套层级为3层
  • CSS渲染性能

css和html的加载过程如下(图来自mdn)


image.png
  1. 可以通过压缩代码,进行性能优化
  2. 减少阻塞加载,比如少用import

慎重选择高消耗的样式

  1. box-shadows
  2. border-radius
  3. transparency
  4. transforms
  • 减少重排

解决方案:

  1. 在修改DOM的样式时,不去一条条修改而是事先写好队形样式的类名,然后修改DOM的类名即可
  2. 将DOM离线之后进行修改,比如先将DOM display:none之后再进行多次修改,最后将其显示出来,展示最终样式即可
  3. 将需要多次重排的元素,position属性设为absolute或fixed,这样此元素就脱离了文档流,它的变化不会影响到其他元素。例如有动画效果的元素就最好设置为绝对定位
  • 不滥用浮动,一个页面中不超过10次浮动
  • 不声明过多的font-size
  • 标准化各浏览器的前缀
  • 合理使用GPU加速

你可能感兴趣的:(CSS性能优化)