Compass Sprites 使用与问题解决
什么是Sprites? 请参考W3C CSS Image Sprites 范例
简单来说,就是使用一张大图片,利用位移方式显示想要的图案 好处就是减少HTTP Request次数(一张图片就是发起一次HTTP Request)
网路上有现成的工具可以使用 CSS Sprites generator 这个工具非常方便,可以自动帮你产生图档和CSS文件
先前介绍的SCSS Framework - Compass,也提供的好用的方法可以使用 Compass Sprites Document
简单说明使用方式
1.config.rb设定档内 => images_dir 指定位置内新增一资料夹 example => arrows 2.将要合并的图档arrows资料夹内
- images_dir/arrows/up.png
- images_dir/arrows/down.png
- images_dir/arrows/left.png
- images_dir/arrows/right.png
3.scss档案输入
- @import "arrows/*.png";
- @include all-arrows-sprites; => @include all-[folder-name]-sprites
4.对应的CSS应该会产生以下内容
.arrows-sprite, .arrows-down, .arrows-left, .arrows-right, .arrows-up { background: url('/images/arrows-sef3b99158d.png') no-repeat; }
.arrows-down { background-position: 0 -32px; }
.arrows-left { background-position: 0 -96px; }
.arrows-right { background-position: 0 -64px; }
.arrows-up { background-position: 0 0; }
可能遇到的问题
1.路径问题 => windows环境下,由于正(\)反(/)斜线问题,导致路径问题
解决方式: compass watch path => path使用linux路径表示
example : d:\www\project1 => d:/www/project1
2.CSS样式图片路径不准确 .arrows-sprite, .arrows-down, .arrows-left, .arrows-right, .arrows-up { background: url('/images/arrows-sef3b99158d.png') no-repeat; }
解决方式: config.rg 加入参数 => relative_assets = "true"
在HTML使用方式 <div class="arrows-down"></div>