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. 从客户端检测到危险的Request.Form值解决方案

    1.修改aspx页面中的代码,设置ValidateRequest="false" <%@ Page Language="C#" AutoEventWire ...

  2. MySql不支持事务解决

    用的是一个绿色版的mysql数据库,发现不支持事务,在网络上搜集资料找到解决方案: 1.执行语句  SHOW ENGINES; 如果发现InnoDB全部显示为“YES”,说明该版本的数据库支持事务 2 ...

  3. poj 1182 并查集高级应用

    C - 是谁站在食物链的顶端 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB     ...

  4. hibernate像MySQL数据库里面存值是中文乱码的解决合辑

    解决办法一: 1.把数据库表每一行改成gb2312_chinese(使用PHPMyAdmin)   2.导入时候还是不行,因此查网上的资料说hibernate持久化层在传输过程中未设置编码格式,这样在 ...

  5. u盘禁用

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\USBSTOR]" ...

  6. C语言初学 计算三角形面积问题

    #include<stdio.h> #include<math.h> #include<stdlib.h> int main() { float a,b,c,s,a ...

  7. Anisotropic gauss filter

    最近一直在做版面分析,其中文本行检测方面,许多文章涉及到了Anigauss也就是各向异性高斯滤波. 顾名思义,简单的理解就是参数不同的二维高斯滤波. 在文章Fast Anisotropic Gauss ...

  8. mongoDB初探

    最近在努力学习node方面的东西,看别人的资料里提到最多用到的数据库还是mongoDB,早打算下载下来试一下,由于电脑新配置,网络也由于住的地方现在上不了网暂时用的手机4G网络在凑合,这里面也踩到了不 ...

  9. C语言里面关于数组的一个容易忽视的小细节

    ginobili@VM_44_28_sles10sp1:~/code> cat test3.cpp #include <stdio.h> int main(){ char a[5] ...

  10. XJOI网上同步训练DAY6 T2

    思路:记得FJ省队集训好像有过这题,可是我太弱了,根本不懂T_T #include<cstdio> #include<iostream> #include<cmath&g ...