img-sprite 设想
Sep 30, 2015
前言
大概有两种方法制作精灵图
- 开发阶段,工具处理图片得到对应的
.icon-class
,再直接使用相应的 class、或者通过 css 预处理工具 mixin 即可。不具有入侵性 - 构建阶段,工具处理 css 文件并在生成精灵图后将路径和大小替换回去,在原本 css 文件的基础上产出新的 css 文件
本工具主要基于方法 2 的思路实现,理由如下:
- 希望开发人员能轻松通过标记合并特定的图片,而非配置文件。可方便维护和产出多个精灵图
- 不依赖于 CSS 预处理工具,降低使用门槛
- 开发阶段不需要过多去注意合并精灵图的事情
实现
关键点
- CSS 文件中提取出图片地址
- 根据图片地址,使用 spritemith 合并图片,并得到坐标
- 将 CSS 中的图片地址、大小替换为精灵图,并添加坐标
其他需要
- 提取颜色,区分十六进制和 rgb
- Base64 标记(
v0.2.0
) - 自动生成图片大小,即常规精灵图工具的简化(todo)
- 多个 css 文件复用图片,需要支持数组
- @2x,通过 media 重写特定的背景样式
遍历 AST 树
功能
- 遍历所有对象节点,包括数组
- 提供 enter 和 leave 调用
- 基本数据类型不需要查看
- 对象执行 enter 和 leave
- next:没什么用
- skip:不检查当前 node 的子节点
- stop:停止遍历
- remove:移除当前 node
- 基本数据不做处理
- 数组需要遍历,递归每个对象