前言
本文着重介绍 compass 怎么样生成雪碧图,至于安装 compass 环境本文不做介绍,网上有很详细的介绍,移步阮一峰的教程。
初始化 compass
在使用 compass 之前,我们需要创建一个 compass 的目录。在一个目录下,打开终端,运行下面命令。
1
| compass create myProject
|
先在 img 目录下新建 icons 文件夹,里面存放各种 icon 文件,然后在sass目录下创建icons.scss,工程示例如下:
1 2 3 4 5 6 7 8
| --sass |--icons.scss --css --img |--icons |--car.png |--share.png --config.rb
|
然后我们在 icon.scss 编写以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $icons-sprite-dimensions: true; $icons-layout: horizontal; $icons-spacing: 5px; $icons-car-spacing: 20px; $disable-magic-sprite-selectors: false; @import 'compass/utilities/sprites'; @import 'icons/*.png';
.car { @include icons-sprite(car); } .share { @include icons-sprite(share); }
|
常用的配置就这些了,如果需要了解其他配置,请查阅Compass 的文档。
移动端的 icon 适配
在移动端开发中,用 compass 制作出来的雪碧图,在普通屏显示是没有问题的,但是 iphone4 开始,屏幕开始采用 retina 显示屏,对图片的质量比较高。一般情况下,我们都是采用图片折半的方案,图片才能高清的显示出来。那怎么办呢??
这时候,我们就需要用 css3 的新特性 background-size 了,background-size 有两个属性,我们只能这两个属性分别设置原 icon 高宽度的一半就可以了。而 background-size 成一半,那么 background-position 也必须调整。
这里我写了一个 sass 的工具函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| $icons-sprite-dimensions: true; @import 'compass/css3'; @import 'compass/utilities/sprites'; @import 'icons/*.png'; @mixin resize-sprite($map, $sprite, $percent) { $spritePath: sprite-path($map); $spriteWidth: image-width($spritePath); $spriteHeight: image-height($spritePath); $width: image-width(sprite-file($map, $sprite)); $height: image-height(sprite-file($map, $sprite)); @include background-size( ceil($spriteWidth * ($percent/100)) ceil($spriteHeight * ($percent/100)) ); width: ceil($width * ($percent/100)); height: ceil($height * ($percent/100)); background-position: 0 floor(nth(sprite-position($map, $sprite), 2) * ($percent/100)); }
.icon-car { $spriteName: car; $percent: 50; @include resize-sprite($icons-sprites, $spriteName, $percent); }
.icon-share { $spriteName: share; $percent: 50; @include resize-sprite($icons-sprites, $spriteName, $percent); }
|
下载示例代码:compass-sprite
[本文谢绝转载,谢谢]