css雪碧图又叫css精灵或css sprite,是一种背景图片的拼合技术。使用css雪碧图,能够减少页面的请求数、降低图片占用的字节,以此来达到提升页面访问速度的目的。但是它也有令人诟病的地方,就是拼图和后期维护的成本比较大。也正是因为这一点,导致很多开发者懒于使用css雪碧图。

配置compass项目

$ compass init

会生成相应的目录和配置文件。在images目录下建立logo目录存放需合并的图标。项目目录结构如下:

- sass
|-- icons.scss
|-- screen.scss
- stylesheet
- images
|-- logo

config.rb 文件配置如下:

 http_path = "/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "javascripts" relative_assets = true // 使用相对目录
line_comments = false // 关闭行注释

合并雪碧图

输出所有雪碧图样式

新建一个文件icons.scss,在screen.scss中引入icons.scss。

在icons.scss里面引入sprites: @import "compass/utilities/sprites"

images文件里子目录logo:把所有图片放到这里。(方便将来将其和其他图片区分开来)

icons.scss文件里将logo文件引入进来: @import "logo/*.png"; (*引入logo目录下的所有文件)。

 @import "compass/utilities/sprites";    // 加载compass sprites模块
@import "share/*.png"; // 导入share目录下所有png图片
@include all-share-sprites; // 输出所有的雪碧图css

生成的代码中 .logo-sprite 是雪碧图的基础类生成的每个雪碧图默认的class规则是: .目录名-图片名 。

调用单个雪碧图样式

 @import "compass/utilities/sprites";    // 加载compass sprites模块
@import "share/*.png"; // 导入logo目录下所有png图片
.main-logo{
@include logo-sprite("img1");
}

编译后的css为:

 .logo-sprite, .main-logo {
background-image: url('../images/logo-sd097a30ac3.png');
background-repeat: no-repeat;
}
.main-logo {
background-position: 0 0;
}

利用魔术精灵选择器智能输出

比如hoveractivefocustarget等。利用compass的魔术精灵选择器我们就可以智能的合并各状态的图标,并输出对应的css。使用时,我们需要将图标按照一定的规则命名。例如:

img1.png            // 默认状态图标
img1_hover.png // hover状态图标
img1_active.png // active状态图标

编译后的css为:

 .logo-sprite, .main-logo {
background-image: url('../images/logo-sd097a30ac3.png');
background-repeat: no-repeat;
}
.main-logo {
background-position: 0 0;
}
.main-logo:hover, .main-logo.img1-hover {
background-position: -120px 0;
}
.main-logo:active, .main-logo.img1-active {
background-position: -60px 0;
}

调出隐藏的logo.scss命令行:

compass sprite 'images/logo/*.png'

$logo-sprite-dimensions:用来控制输出CSS的时候是否根据图片大小对我们的相应类名css属性添加一个宽和高。
$logo-layout:修改合图布局方式。

  --默认是垂直 horizontal水平的。

  --diagonal斜对角线布局的。

  --smart节省空间布局

 $logo-sprite-dimensions: true;
$logo-layout: horizontal;
 

compass模块----Utilities----Sprites精灵图合图的更多相关文章

  1. compass模块----Utilities

    引入Utilities: @import "compass/utilities"; 分别引入: @import "compass/utilities/color" ...

  2. CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图

    CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图   一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-positio ...

  3. compass与css sprite(雪碧图)

    什么是css sprite? css sprite,中文叫雪碧图,也有人喊CSS精灵,就是一种背景拼合的技术,然后通过background-position来显示雪碧图中需要显示的图像. MDN相关链 ...

  4. 【转载】利用Unity自带的合图切割功能将合图切割成子图

    虽然目前网上具有切割合图功能的工具不少,但大部分都是自动切割或者根据plist之类的合图文件切割的, 这种切割往往不可自己微调或者很难维调,导致效果不理想. 今天逛贴吧发现了一位网友写的切割合图插件很 ...

  5. Cocos2d-JS项目之三:使用合图

    studio里使用合图感觉和spriteBatchNode差不多,但有不同,合图只起到在加载资源时减少IO的作用,起不到批渲染的作用.其实想想,studio本来就是用来拼UI界面的,一个上点规模的UI ...

  6. compass模块----Helpers

    Color Stops:在使用CSS3渐变属性生成图片的时候,有时候为了打造更丰富的渐变效果除了声明渐变线上的起始点和终止点的色值,还有声明一些中间点的色值,这些点我们就称之为Color Stops. ...

  7. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  8. Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...

  9. UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

随机推荐

  1. Jquery JSOPN在WebApi中的问题

    1. 客户端代码: $.ajax({ data: { name: 'zhangsan' }, url: apiUrl.getTwo('TestFourth'), dataType: 'jsonp', ...

  2. (转)弹出窗口lhgDialog API文档

    应用到你的项目 如果您使用独立版本的lhgDialog窗口组件,您只需在页面head中引入lhgcore.lhgdialog.min.js文件,4.1.1+版本做了修改可以和jQuerya库同时引用, ...

  3. Android Activity 分类

    在安卓系统中,Activity 按照优先级可以分为三种: 1. 前台Activity,是指正在和用户进行交互的Activity,优先级最高: 2.可见但非前台Activity,是指可见但无法与用户进行 ...

  4. zookeeper端口号冲突:8080冲突

    端口号冲突,在conf/zoo2181.cfg文件里面添加一个端口号的指定(具体的端口号可以自己定义一个): admin.serverPort=8081

  5. poj1418 Viva Confetti 判断圆是否可见

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Viva Confetti Time Limit: 1000MS   Memory ...

  6. HDU 5141

    这个题 LIS  +  并查集的思想 + 链式前向星 要求找s(i,j)使i j 能有最长的LIS  ... 做法是枚举每一个j 即终点  算 起点 的可能 无力吐槽了  bc 的时候写错了一个地方 ...

  7. IP地址的存储和使用

    ip地址使用int类型存储,用INET_NTOA()和INET_ATON()转换 mysql'),inet_aton('127.0.0.1'); +-------------------------+ ...

  8. CentOS7.1 使用资源搜集

    1.配置java环境 -openjdk* 测试 java -version 2.安装Tomcat8.0.35 点击题目可以参考源网页,但有些代码无法执行,更改如下(亲测可行): 一定要先安装java环 ...

  9. asp.net 的那点事(2、浏览器和一般处理程序)

    从今天开始我们接着来学习:asp.net中一般处理程序和浏览器的通信. 一.第一个图解: 从图解中我们看出,整个过程是:"请求---处理---响应".这个也就是经常面试的时候,面试 ...

  10. Ubuntu pip 安装网络爬虫框架 scrapy 出现的错误

    1.问题     File "/usr/bin/pip", line 9, in <module> load_entry_point('pip==1.5.4', 'co ...