知用网
白蓝主题五 · 清爽阅读
首页  > 生活百科

CSS性能优化的实用技巧,让网页加载更快更流畅

减少选择器的复杂度

很多人写CSS时喜欢层层嵌套,比如 .header .nav .menu li a:hover 这种写法。虽然能实现效果,但浏览器解析起来特别慢。越复杂的选择器,匹配消耗的时间越多。建议尽量使用类名直接定义,像 .nav-link 这样简单明了,既好维护又高效。

避免使用通配符选择器

有些人为了省事,开头来一句 * { margin: 0; padding: 0; }。这看似方便,其实会让页面上每一个元素都执行一次样式计算,尤其是元素多的时候,卡顿感明显。可以用更精准的重置方式,比如只对常用标签设置:

<style>
body, h1, h2, h3, p, ul, ol, li {
  margin: 0;
  padding: 0;
}
</style>

精简和合并CSS文件

一个项目里如果引入了五六个CSS文件,浏览器就得发起多次请求,拖慢页面打开速度。可以把常用的样式合并成一个文件,减少网络请求次数。比如把公共样式、按钮、布局这些打包成 main.css,既能加快加载,也方便管理。

善用CSS属性继承

有些样式是可以继承的,比如字体、颜色。如果整个页面用同一款字体,没必要每个元素都写一遍 font-family。在根元素上设置就行:

<style>
body {
  font-family: 'PingFang SC', sans-serif;
}
</style>

子元素会自动继承,代码少了,渲染也快了。

避免频繁重排和重绘

改变元素的宽高、位置等布局属性时,浏览器需要重新计算布局(重排)甚至重新绘制画面(重绘),非常耗性能。比如轮播图动画,别用 topleft 来移动,改用 transform: translateX(),GPU会接管这部分工作,动画更顺滑。

使用CSS精灵图减少图片请求

一个页面上有十几个小图标,每个都是单独图片,加载起来零散又慢。以前做电商详情页就遇到过这个问题。后来把所有小图标拼成一张大图,通过 background-position 显示对应部分,请求从十几个变成一个,速度快了一大截。

按需加载非关键CSS

首页不需要一开始就加载打印样式或暗黑主题的CSS。可以把这些非首屏必需的样式异步加载,或者用媒体查询延迟加载,比如:

<link rel="stylesheet" href="print.css" media="print">

这样打印机要用时才下载,不影响正常浏览体验。