compass是sass的一个库,关系相当于js中的jq。比较可惜的是compass的文档比较混乱 看的不太舒服,下面是compass的文档地址,有兴趣的可以去看看

  http://compass-style.org/help/documentation/

  在这里我就不仔细讲compass的知识了,可以去阮一峰的博客里面有一遍compass的介绍,附上链接地址

  http://www.ruanyifeng.com/blog/2012/11/compass.html

  这里主要讲的是图片精灵,我们在网上可以找到很多关于compass使用图片精灵的方法,比较可惜的是不太满足我们的需求,所以做了如下改变

  需要注意的是config.rb上面要写上合成雪碧图的路径

http_path = "/"
css_dir = "dist/css"
sass_dir = "src/sass"
images_dir = "dist/img"
javascripts_dir = "src/js"
sprite_load_path = "src/img"
output_style = :compressed
asset_cache_buster :none

  编译之前的sass代码:

@charset "utf-8";
@import "compass/utilities/sprites";
@import "compass/css3/background-size"; // 公用图片精灵的配置信息
$sprites_common: sprite-map("common/*.png", $spacing: 10px, $layout: vertical,$sort-by: '!width',$position:10px,$repeat:no-repeat,$clean-up:true); @mixin img-sprite($sprite, $name, $sprite-name) {
//获取当前图标的图片名字
$imgurl: sprite-file($sprite, $name);
//获取当前图标的位置
$pos: sprite-position($sprite, $name); //根据名字获取获取长度和宽度,并设置
width: image-width($imgurl) / 2;
height: image-height($imgurl) / 2; //设置图标的位置
background-position: nth($pos, 1) / 2 nth($pos, 2) / 2;
//使用compass的Css3模块 兼容处理背景图片大小
@include background-size(ceil(image-width(sprite-path($sprite)) / 2) auto);
} @mixin img-common($name) {
@include img-sprite($sprites_common, $name, "common");
} //设定icon的图片信息
.common{
//下面这句代码会触发图标合成一张图
background-image: sprite-url($sprites_common);
background-repeat: no-repeat;
display: inline-block;
.icon-baike{
@include img-common('ic_baike')
}
.icon-ic_card_gongshang{
@include img-common('ic_card_gongshang')
}
}

  编译之后的css文件:

/* line 29, ../sass/ie.scss */
.common {
background-image: url('/img/common-sbb7f65b409.png');
background-repeat: no-repeat;
display: inline-block;
}
/* line 34, ../sass/ie.scss */
.common .icon-baike {
width: 18px;
height: 20px;
background-position: -5px -1870px;
-moz-background-size: 59px auto;
-o-background-size: 59px auto;
-webkit-background-size: 59px auto;
background-size: 59px auto;
}
/* line 37, ../sass/ie.scss */
.common .icon-ic_card_gongshang {
width: 30px;
height: 30px;
background-position: -5px -743px;
-moz-background-size: 59px auto;
-o-background-size: 59px auto;
-webkit-background-size: 59px auto;
background-size: 59px auto;
}

使用compass更高效的编辑css --- 图片精灵的更多相关文章

  1. 【CSS sprites (CSS图片精灵) 详解】

    本文包含 CSS sprites 简介.原理.适用在哪些类型的网页制作中.背景图片的 position 值如何确定以及制作 sprites 的技巧. [CSS sprites 简介] CSS Spri ...

  2. css图片精灵

    <ul> <li class="top"> <em>01</em> <p><a href="http:/ ...

  3. 如何更高效地定制你的bootstrap

    bootstrap已经作为前端开发必不可少的框架之一,应用bootstrap使得我们对布局.样式的设定变得非常简单.但bootstrap提供的默认样式往往不能满足我们的需求,从而定制化bootstra ...

  4. 这些小工具让你的Android 开发更高效

    在做Android 开发过程中,会遇到一些小的问题.尽管自己动手也能解决.可是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vy ...

  5. CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(1)设定背景图

    技术的新发展,除计算机可以接入互联网之外,平板电脑.智能手机.智能电视等其他设备均可访问互联网.在多设备时代,构建多屏体验也不是听说的那么难. 但是这也增加了学习CSS的难度?不知道如何上手,只懂一点 ...

  6. 转:利用node压缩、合并js,css,图片

    1.安装nodejs http://nodejs.org/ 2.安装各自的node package js我用的是UglifyJS github地址:https://github.com/mishoo/ ...

  7. CSS图片列表

    1.效果图: 2.Example Source Code <h3><a href="http://www.52css.com/">我爱CSS画廊</a ...

  8. 使jQuqer更高效的方法

    讨论 jQuery 和 javascript 性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的 jQuery 和 javascript 代码.好的代码会带来速度 ...

  9. Android高效内存:让图片占用尽可能少的内存

    Android高效内存:让图片占用尽可能少的内存 一.让你的图片最小化 1.1 大图小图内存使用情况对比 大图:440 * 336    小图:220 * 168 小图的高宽都是大图的1/2--> ...

随机推荐

  1. 《C++ Primer》之指向函数的指针

    函数指针是指指向函数而非指向对象的指针.像其他指针一样,函数指针也指向某个特定的类型.函数类型由其返回类型以及形参表确定,而与函数名无关: // pf points to function retur ...

  2. VBS基础篇 - 循环语句(3) - For...Next

    VBS基础篇 - 循环语句(3) - For...Next   指定循环次数,使用计数器重复运行语句,语法结构如下: 1 2 3 4 5 For counter = start To end [Ste ...

  3. LINUX修改IP地址

    以前都是使用自动IP动态分配获取IP的,虽然每次获得的ip都是相同的,但我还是决定自己设置一个IP.输入命令:[root@localhost ~]# ifconfig eth0 219.246.177 ...

  4. cmstop传递什么控制器和方法---就实例化该控制器

    object顶级类class object 第一级抽象类controllerabstract class controller extends object 第二级抽象类controller_abst ...

  5. strlcpy() 函数

    size_t strlcpy(char *dst, const char *src, size_t siz) {  char *d = dst; const char *s = src; size_t ...

  6. Entity Framework技巧系列之七 - Tip 26 – 28

    提示26. 怎样避免使用不完整(Stub)实体进行数据库查询 什么是不完整(Stub)实体? 不完整实体是一个部分填充实体,用于替代真实的对象. 例如: 1 Category c = new Cate ...

  7. LeetCode OJ 292.Nim Gam148. Sort List

    Sort a linked list in O(n log n) time using constant space complexity. 排序问题是我们遇到的一个老问题,从大一开始我们就学习了各种 ...

  8. if语句,函数function

    1.语句 一般分为顺序,分支和循环语句. if是分支语句 格式1:if(){}  若满足就进入花括号,若不满足就跳过 格式2:if(){}else(){}二选一.若if满足则else一定不执行,反之则 ...

  9. oc唯一标时一部设备

    ios7之前可以使用mac地址 ios7之后首先创建两个类 #import MyKeyChainManager.h @implementation MyKeyChainManager : NSObje ...

  10. 传统 Ajax 已死,Fetch 永生

    原谅我做一次标题党,Ajax 不会死,传统 Ajax 指的是 XMLHttpRequest(XHR),未来现在已被 Fetch 替代. 最近把阿里一个千万级 PV 的数据产品全部由 jQuery 的  ...