相信大家在前端开发这条路不归路上,都为此头疼过,干这件事情不仅费时费力还费眼睛,各种辅助线打上、网格划上,处处精确到像素级别,长期下来想必大家也都有像素对齐强迫症了,唉……说多了都是泪。那就是今天的主角 - 雪碧图(image spriting),至于他的介绍,他的好,他的工作原理也就不必多说了。
不过今天要介绍的新东西,或许能然你不在重操这些枯燥无味的动作,简单配置之后,一切就那么随意的,先放上官方的教程 Compass Sprite,下面重点介绍我的个人实践和一些使用经验。
文件准备
这里我找了 5 枚 24x24 的 Glyphicons 图标,icons
文件夹里放要拼合的图片资源单个图片资源
1 | images/ |
简单实践
1 | // ------ style.scss ------ |
代码部分就是这些了,看一下之前的目录结构,发现在指定的图片文件夹 images
里已经生成了拼合好的雪碧图 icons-sbf1475184a.png
,文件命名是由“指定部分-hash string”,每次在源图片改变时,更新缓存编译之后会生成新的雪碧图。拼合好的雪碧图
这里再补充一下,官方文档里还导入了 sprite 组件,个人在使用中发现会报错,就去除了。编译时通过 compass command 是没有任何问题的。Compass Command Line Documentation
大概是和当前项目配置文件有关,所以建议在没有配置文件的前提下,先用 creat
命令创建项目,在对配置文件进行相应的更改。我是在 grunt-compass 中处理的,没有单独进行这些操作。
关于编译时路径报错,可以在 config.rb
里根据自己的需求,添加或更改配置项。Application Integration
手动指定类名
有时候会遇到这种情况,带有雪碧图属性的 class 自身还有其余属性,就需要单独去定义。
1 | // ------ style.scss ------ |
但是从生成的雪碧图,我看到的仍然将整个文件夹里的全部生成了,这里作为标记,等我去查查资料。
个性配置
输出布局 Sprite Layouts
从图中我们可以看到,默认输出的雪碧图是按各个图片,垂直排列的。Compass 提供了:Vertical
,Horizontal
,Diagonal
,Smart
,默认以 Vertical 输出。1
$icons-layout: smart; // {文件夹名称}-layout
控制间距
为每个图片加入空白间隙,此处指定为10px
1
$icons-spacing: 10px;
自动获取当前图片的尺寸
1
$icons-sprite-dimensions: true;
配置语句,都写在最前。
1 | // ------ style.scss ------ |