(三)Sass和Compass--制作精灵图片

6.1 精灵的工作原理

// 将各种图片合并到一张图片里面,并在不同的状态下改变背景图片的位置;

6.2 精灵的重要性

// 压缩图片的内存;

// 减少HTTP请求

6.2.3 Compass处理精灵方案

// 1.让Compass指向一个精灵的文件夹;

// 2.告诉Compass撰写精灵CSS;

// 3.编译样式表;

6.3 用Compass制作精灵

6.3.1 创建一个精灵地图

1 @import "compass/utilities/sprites";    // 精灵图片控件;
2 @import "Icon/*.png";                   // Icon文件夹位于images文件夹内并包含所有精灵图片;
3
4 // 生成精灵图片位于images文件夹内;并生成编译后的CSS;
5 CSS:
6     .Icon-sprite {             // 自动生成的类命名;
7       background-image: url(‘/images/Icon-s040daee5af.png‘);
8       background-repeat: no-repeat;
9     }

6.3.2 引入精灵并生成CSS

 1 1.all-sprites精灵混合器
 2 Sass:
 3     @include all-Icon-sprites;          // 为整个精灵地图撰写所有必要的CSS;
 4 CSS:                     // 生成内容;
 5     .Icon-sprite, .Icon-index1, .Icon-index2, .Icon-index3, .Icon-index4, .Icon-index5 {
 6         background-image: url(‘/images/Icon-s040daee5af.png‘);  // 所有的相关类都引用此图片;
 7         background-repeat: no-repeat;
 8     }
 9     .Icon-index1 {
10         background-position: 0 0;
11     }
12     ...
13     .Icon-index5 {
14         background-position: 0 -560px;
15     }
16
17 // 使用@extend继承精灵的样式
18 Sass:
19     .add-button { @extend .Icon-index1} // 这种方法会生成更少的CSS;
20 CSS:
21     .Icon-index1, .add-button {      // 直接叠加了一个类,比较方便;
22         background-position: 0 0;
23     }
 1 2.single-sprite精灵混合器
 2 Icon-sprite($name);                     // 输出一个独立命名精灵的CSS;  $name:单独图片的名字(index1);
 3 Sass:
 4     .add-button2 {
 5         @include Icon-sprite(index5);
 6     }
 7 CSS:
 8     .add-button2 {
 9         background-position: 0 -560px;  // 与index5对应的图片的位置;
10     }

6.4 配置Compass精灵

6.4.1 自定义精灵地图

// 可以自定义一个精灵地图或通过其配置变量有针对性地定义精灵;

// <map>:存放精灵的文件名;

// <sprite>:某个单独的精灵图片的名字;

// 以下配置的所有变量需在导入精灵("@include all-Icon-sprites")之前被定义;

1 1.配置精灵图之间的间距
2 $<map>-spacing:Xpx;                     // 设置所有精灵图之间的间距为Xpx;
3 $<map>-<sprite>-spacing:Xpx;            // 设置某个精灵图的间距;
4 Sass:
5     $Icon-spacing:4px;                  // 所有图片的间距为4px;
6     $Icon-index1-spacing:12px;          // index1图片的间距为12px;
1 2.设置精灵的重复性
2 $<map>-repeat:no-repeat/repeat-x;       // 默认值是no-repeat;设置为repeat-x可以使其X轴平铺;
3 $<map>-<sprite>-repeat:no-repeat/repeat-x;  // 设置单个图片的重复属性;
4 Sass:
5     $Icon-index2-repeat:repeat-x;       // index2图片在精灵图片里边横向平铺;
3.设置精灵的位置
$<map>-position:Xpx;                      // 垂直向右(水平向下)移动Xpx距离;
$<map>-<sprite>-position:Xpx;
Sass:
    $Icon-positioin: 10px;          // 所有图片向右10px;
1 4.设置精灵地图的布局
2 $<mpa>-layout: vertical(垂直)/horizontal(水平)/diagonal(对角线)/smart(产生最小的空白区域);  // 默认布局是vertical;  $Icon-layout:horizontal;        // 在引入sprites模块之前定义;
1 5.清除过期的精灵地图
2 $<map>-clean-up:true/false;

6.4.2 自定义精灵的CSS

 1 1.输出精灵的尺寸
 2 $<map>-sprite-height($name);            // 得到某个精灵图片的高度;
 3 $<map>-sprite-width($name);
 4 $<map>-sprite-dimensions:true/false;    // 为精灵地图中的每个精灵自动输出尺寸;
 5 Sass:
 6     .next {
 7         @include Icon-sprite(index2);
 8         width:Icon-sprite-width(index2);// 得到精灵图片的大小;
 9     }
10 CSS:
11     .next {
12         background-position: -10px -150px;
13         width: 140px;           // 生成的图片大小;
14     }
 1 2.精灵的基础类
 2 // Compass可以方便地通过生成一个基础类为每个精灵应用普通样式;
 3 $<map>-sprite-base-class:".class-name";
 4 // 当使用全部精灵或单独精灵的混合器时,Compass会输出一个精灵的基础类;并且其选择器还会串联所有设置了background-image属性的选择器;
 5 // 每个精灵地图的基础类都以其文件夹的名字命名;
 6 Sass:
 7     $Icon-sprite-base-class: ".Icon";
 8     .Icon {                             // 设置精灵的CSS基础类;
 9         overflow: hidden;
10         width:Icon-sprite-width(index1);
11     }
12 CSS:
13     .Icon, .Icon-index1, .Icon-index2, .Icon-index3, .Icon-index4, .Icon-index5 {
14       overflow: hidden;
15       width: 140px;
16     }
 1 3.魔术精灵选择器
 2 $disable-magic-sprite-selectors:true/false;
 3 // 魔术精灵选择器是默认开启的,也就是说Compass在精灵时会根据以"_hover"/"_active"或"_target"结尾的名字自动输出CSS的:hover/:active和:target伪选择器;
 4 // 在Icon文件夹内添加index4_hover.png之后会自动生成关于index-4:hover的类及相关代码;
 5 CSS:
 6     .Icon-index4 {
 7         background-position: 0 -420px;
 8     }
 9     .Icon-index4:hover, .Icon-index4.index4-hover {
10         background-position: 0 -560px;
11     }

6.5 驾驭精灵辅助器

6.5.1 创建精灵地图

// 之前的"@import ‘Icon/*.png‘",不仅创建了一个精灵地图,还为精灵地图和每个精灵设置了混合器和变量;

1 1.sprite-map辅助器
2 $Icon:sprite-map("Icon/*.png",$layout:smart);   // 它会创建一个智能布局的精灵地图,并把精灵地图的图片URL赋值给$Icon变量;
1 2.sprite-map辅助器--设置单个精灵
2 $Icon:sprite-map("Icon/*.png",$index2-spacing:5px);

6.5.2 撰写精灵的CSS

// 在Compass为你生成精灵地图之后,仍需要写出每个精灵的CSS;

 1 1.sprite辅助器
 2 sprite($map,$sprite,[$offset-x],[$offset-y]);  // $map:精灵基础类; $sprite:单个图片名,用于定位背景图片;
 3 // sprite辅助器需要精灵地图/精灵的名字以及可选的偏移坐标;
 4 Sass:
 5     $Icon:sprite-map("Icon/*.png",$layout:smart);
 6     // 精灵基础类的一个优点就是只需要赋值一次背景图片(把路径复制到变量中);
 7     .next {
 8         background:sprite($Icon,index2) no-repeat;
 9     }
10 // 这仅仅会输出背景属性,而不会成为一个精灵的基础类或其他任何不需要的CSS;
11 CSS:
12     .next {
13         background: url(‘/images/Icon-s6558f78e4f.png‘) 0 -140px no-repeat;
14     }
 1 2.设置精灵的位置
 2 // 为了移除重复的背景图片,你可以用sprite-position辅助器或sprite-background-position混合器取代sprite辅助器;
 3 Sass:
 4     $Icon:sprite-map("Icon/*.png");             // 辅助器创建精灵地图;
 5     .sprite-base { background:$Icon no-repeat; }// 引入精灵地图;
 6     .next {
 7         @extend .sprite-base;                   // @extend引用;
 8         background-position:sprite-position($Icon, index2);
 9         // 设置background-position属性;
10         // sprite-position:辅助器,用于定位图片位置;
11         // $Icon:变量,引入精灵图片路径;
12         // index2:定位精灵图片index2位置的参数;
13     }
14 CSS:
15     .sprite-base, .next {
16         background: url(‘/images/Icon-sb501daeae5.png‘) no-repeat;
17     }
18     .next {
19         background-position: 0 -140px;
20     }
 1 3.设置精灵的尺寸--sprite-dimensisons混合器
 2 // 它需要精灵地图和精灵的名字,并输出经过测量的尺寸;
 3 Sass:
 4     $Icon:sprite-map("Icon/*.png");             // 辅助器创建精灵地图;
 5     .sprite-base { background:$Icon no-repeat; }// 引入精灵地图;
 6     .add {
 7         @extend .sprite-base;
 8         @include sprite-background-position($Icon,index3);  // 精灵图片定位辅助器;
 9         @include sprite-dimensions($Icon,index3);
10     }

6.6  小结

// 1.从远程服务器加载大量图片对性能的影响以及精灵图片如何作为重要方法解决高流量网站问题;

// 2.Compass如何完全自动化处理精灵,并探索了配置及控制Compass生成精灵地图和CSS的几种方式;

时间: 2024-10-12 21:43:07

(三)Sass和Compass--制作精灵图片的相关文章

Sass和Compass制作雪碧图

1.安装好了sass与compass之后设置一个配置文件 2.新增一个雪碧图文件夹用来存放将要合并的图片例如color文件夹 [email protected]命令引用 .Compass看到@import指令的参数为*.png时,它会假定将这个目录下的所有.png图片制作成一张雪碧图 你也可以通过一定的规则让它按照自己需要的图片以及排版来生成相应的雪碧图,设置如下: 第一个框框里面的设置是把所有color文件夹下的图片合成一张大图,同事会编译出对应的css文件. 第二个框框里面的设置是把colo

Qt移动应用开发(三):使用精灵图片实现帧动画

Qt移动应用开发(三):使用精灵图片实现帧动画 上一篇博文讲到了Qt Quick对于动画的一般支持,动画的形式多样,配合不同的插值函数,可以几乎实现所有想要的动画效果,而对于游戏的一些特殊的效果比如说帧动画,Qt更是有专门的类来实现.下面我们就来看看Qt Quick中究竟是对帧动画是如何实现的吧. 原创文章,反对未声明的引用.原博客地址:http://blog.csdn.net/gamesdev/article/details/33743527 一般2D的游戏引擎都将帧动画作为一项非常重要的功能

Sass与Compass 学习笔记

Sass与Compass 学习笔记 安装: 1.装sass之前先确认装了ruby ; 2.命令gem install sass *注一般不能正常安装 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.这时候我们可以通过gem sources命令来配置源,先移除默认的https://rubygems.org源,然后添加淘宝的源https://ruby.taobao.org/,然后查看下当前使用的源是哪个,如果是淘宝的,则表示可以输

使用Compass制作雪碧图

遇见好的文章,笔者也会转载.但是正所谓好记性不如烂笔头,单纯的拿来主义也不如自己的亲自实践.所以每次需要转载的文章,我都会自己敲一遍,中间加入一些自己的思考. 这篇文章转载自:http://www.hongkiat.com/blog/compass-image-sprite/ 作者Thoriq Firdaus 译者zEx 前端性能优化,一直是前端开发中非常重要的一环,而其中静态资源特别是图片的优化,又占据了很大的比重.图片优化的方法有很多种,其中非常基本而常用的,就是雪碧图. CSS雪碧图就是将

[已读]Sass与Compass实战

介绍了Sass基础语法与Compass框架,这个网上参考文档就OK了,另外介绍了compass生成图片精灵和相应的css,貌似现在单纯用sass和compass的挺少,要不grunt,要不FIS,而grunt和FIS貌似都有自己的图片精灵方案(好吧,我都没用过)?所以,这本书也没什么必要看了→ →

如何在线制作gif图片?

最近想做个gif在线制作的网站,所以研究下了imagemagick和graphicsmagick制作gif图片 站已经做出来了:有兴趣的朋友可以先看看 http://www.sosogif.com/make_online.jsp 源码下载地址1:http://www.quzhuanpan.com/home/sourceList.jsp?type=6 源码下载地址2:http://www.quzhuanpan.com/download/checkResult.action?id=30&type=6

分享15款很实用的 Sass 和 Compass 工具

Sass 是 CSS 的扩展,增加了嵌套规则,变量,混入功能等很多更多.它简化了组织和维护 CSS 代码的成本.Compass 是一个开源的 CSS 框架,使得使用 CSS3 和流行的设计模式比以往任何时候都更容易. 在这篇文章中,我们已经收集了一组有用的 Sass 和 Compass 工具,将帮助您快速构建 Web 应用程序. 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScri

15、Cocos2dx 3.0游戏开发找小三之Sprite:每个精灵都是上辈子折翼的天使

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30475395 Sprite Sprite 可以说是游戏中最重要的组成元素: 它描述了游戏中的精灵,是 Node 的一个最重要也最灵活的子类. Sprite 很重要,它代表了游戏中一个最小的可见单位, 同时Sprite 也很灵活,它装载了一个平面纹理,具有丰富的表现力,而且 可以通过多种方式加载. 如果说 Scene 和 Layer 代表了宏观的游戏元素

2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等).当前2D Toolkit版本为2.4. 这是一篇系列教程,全文共13节(官方文档为4章,不过为了每节有明确目的,我根据官方文档的标题拆成了13节),下面是本系列教程的所有链接: 2DToolkit官方文档中文版打地鼠教程(一):初始设置 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机