如果要做优化,CSS提高性能的方法有哪些?

80 阅读3分钟

减少CSS文件体积‌:

  • 压缩CSS文件‌:使用工具如cssnanoCleanCSS来压缩CSS文件,移除多余的空格、注释和换行符‌。

  • 移除未使用的CSS‌:通过工具如PurgeCSSUnCSS检测并移除未使用的样式规则‌。

  • 合并CSS文件‌:将多个CSS文件合并为一个文件,减少HTTP请求次数‌。

优化选择器性能‌:

  • 避免使用低效选择器‌:避免使用通配符选择器(*)和复杂的后代选择器,尽量使用类选择器(.class)和ID选择器(#id)‌。
  • 减少层级嵌套‌:避免过深的嵌套,尽量保持选择器简洁,避免超过三层嵌套‌。
  • 使用高效的选择器‌:优先使用ID选择器,其次是类选择器,最后是标签选择器‌。

减少渲染阻塞‌:

  • 使用异步加载CSS‌:对于非关键CSS,可以使用<link rel="preload">(通过rel属性将link元素标记为alternate可选样式表,实现浏览器异步加载。同样别忘了加载完成 之后,将rel设回stylesheet)或JavaScript(将link标签插入到head标签最后)进行异步加载‌。
// 设置link标签media属性为noexis,浏览器会认为当前样式表不适用当前类型,会在不阻塞页面渲染的情况下再进行下载。加载完成后,将 media 的值设为 screen 或 all,从而让浏览器开始解析CSS
<link rel="stylesheet" href="mystyles.css" media="noexist" onload="this.med
ia='all'">
// 通过rel属性将link元素标记为alternate可选样式表,也能实现浏览器异步加载。同样别忘了加载完成之后,将rel设回stylesheet
<link rel="alternate stylesheet" href="mystyles.css" onload="this.rel='styl
esheet'">

  • 使用内联关键CSS‌:将首屏渲染关键的CSS内联到HTML的<style>标签中,以避免额外的CSS文件请求‌。
  • 避免使用@import‌:@import会阻塞页面渲染,建议使用<link>标签引入CSS文件‌。

优化动画性能‌:

  • 使用硬件加速属性‌:如transform: translate3d(0, 0, 0)will-change: transform等属性可以开启硬件加速,提高动画性能‌。
  • 避免过度使用动画‌:减少不必要的动画效果,使用will-change属性预测动画效果,减少实际动画计算量‌。

采用现代CSS特性‌:

  • 使用CSS变量‌:定义可复用的样式值,减少代码重复‌。
  • 使用逻辑属性‌:如calc()函数进行计算,减少代码复杂度‌。
  • 使用Sass或Less等预处理器‌:组织代码,使用变量、嵌套和混入等功能,提高可维护性‌。

其他优化技巧‌:

  • 减少使用昂贵属性‌: 在页面发生重绘的时候,昂贵属性如 box-shadow/border-radius /filter /透明度/:nth-child 等,会降低浏览器的渲染性能
  • 缓存CSS文件‌:设置合理的缓存策略,如Cache-Control和Expires头,避免重复下载‌。
  • 定期进行性能测试‌:使用工具如Chrome DevTools、Lighthouse等定期检查CSS性能,识别潜在的性能瓶颈‌。