Skip to content

CSS 工程化

预处理器 · Icon 技术 · 性能优化 · Sprites


1. CSS 预处理器 / 后处理器

预处理器(Less/Sass/Stylus):

  • 为 CSS 增加编程特性:变量、嵌套、mixin、循环、函数
  • 编译为 CSS 后使用
  • 好处:结构清晰、便于扩展、屏蔽浏览器差异

后处理器(PostCSS):

  • 处理 CSS 本身(类似 Babel 对 JS 的作用)
  • 常用场景:Autoprefixer 自动加浏览器前缀

CSS 工程化三个方向:预处理器(Less/Sass)、PostCSS 插件、Webpack loader


2. Icon 技术演进

发展历程:img 图片 → CSS Sprites → Font Awesome → iconfont

iconfont 三种使用方式

方式兼容性多色特点
unicodeIE6+兼容性最好,书写不直观
font-classIE8+语意明确(.icon-QQ
symbolIE9+支持多色、SVG 矢量、可用 CSS 动画

Inline SVG vs Icon Font

维度Icon FontInline SVG
矢量当文本处理,会抗锯齿真正矢量,清晰锐利
CSS 控制font-size/颜色同上,且可控制各部分
定位依赖行内属性显示尺寸就是本身尺寸
可靠性可能跨域/加载失败内联在文档流,无风险
兼容性IE6+IE9+

结论:只需兼容 IE9+ → inline SVG 几乎全面优于 icon font


3. CSS Sprites(精灵图)

  • 将所有小图标合并到一张大图,通过 background-position 定位
  • 优点:减少 HTTP 请求、减少图片总字节
  • 缺点:合并麻烦、定位需测量、维护困难

4. CSS 性能优化

选择器匹配机制(从右向左)

  • 浏览器解析选择器时从右向左匹配
  • 最右侧部分决定匹配效率,应尽可能精确

加载性能

  • CSS 压缩、减少 @import(用 link 代替)
  • 避免通配符选择器 *
  • 选择器层级不超过三层,多用 class 少用标签

渲染性能

  • 减少重排重绘(避免频繁读取 offset*/scroll*/client*
  • 去除空规则、属性值 0 不加单位
  • CSS 雪碧图(小图标)
  • 减少昂贵属性:box-shadowborder-radiusfilter:nth-child
  • will-change 提前告知浏览器(不可滥用)