CSS雪碧图,就是把所有的图表,按钮和图形包含在一个图像里面。它要求:

静态图片,不随用户信息变化而变化;小图片,图片容量比较小;加载量比较大。

使用这种技术可以减少Web浏览器发出的服务器请求,显著加快下载速度。同时把小图片,按钮集中在一起,可以提高维护性。

在这里介绍一款CSS Sprite自动生成工具——CssGaga,可以快速生成雪碧图。在实际制作中,遇到很多的坑,现在总结下:

1.   坑一

html:

 <div class="cat">
<ul>
<li class="cat-1"><i></i><h3>服装内衣</h3></li>
<li class="cat-1"><i></i><h3>服装内衣</h3></li>
</ul>
</div>

CSS样式:

 * {margin:;padding:;}
.cat {width: 150px;background: #f8f8f8; border:1px solid #ccc;padding:0 20px;}
ul {list-style: none;}
li {height: 31px;line-height: 31px;overflow: hidden;border-bottom:1px solid #ccc;margin-bottom: -1px;}
li i {display: inline-block;width: 30px;height: 24px;}
li h3{ font-size: 14px;font-weight:; }

实际显示:

原因:是i标签设置display:inline-block,h3是块元素,单独占据一行,父元素li设置了overflow属性,所以h3下移一行,内容无法显示。

解决办法:

1.   i标签去掉display属性,改为浮动float:left;

2.   h3标签改为a标签,这种方式比较常用。

2.  坑二

设置  i 标签和h3内容之间的距离,因为 i 标签是浮动的,h3文字内容会靠着i标签,需要设置一定的间距。在这里,可以设置 i 标签的外边距margin,这样两者之间的距离会拉开。i已经脱离文档流,这里的话,就相当于文字的环绕。

 li i {float:left;width: 30px;height: 24px;background: url(sidebar.png);margin: 3px 10px 0 0 ;}

修改前:修改后:

3.坑3

       实际background-position的移动距离和图标的高度(会影响x轴的移动距离)和宽度(会影响Y轴的移动距离)有关系

4.最终的代码如下:

 <style>
* {margin:0;padding:0;}
.cat {width: 150px;background: #f8f8f8; border:1px solid #ccc;padding:0 20px;}
ul {list-style: none;}
li {height: 31px;line-height: 31px;border-bottom:1px solid #ccc;overflow: hidden;margin-bottom: -1px;}
li i {float:left;width: 30px;height: 24px;background: url(sidebar.png);margin-top: 4px;margin-right: 3px;}
li h3{ font-size: 14px;font-weight: 400; }
.cat-1 i {background-position: 0 0;}
.cat-2 i {background-position: 0 -24px;}
.cat-3 i {background-position: 0 -48px;}
.cat-4 i {background-position: 0 -72px;}
.cat-5 i {background-position: 0 -96px;}
.cat-6 i {background-position: 0 -120px;}
.cat-7 i {background-position: 0 -144px;}
.cat-8 i {background-position: 0 -168px;}
.cat-9 i {background-position: -40px 0;}
</style>
</head>
<body>
<div class="cat">
<ul>
<li class="cat-1"><i></i><h3>服装内衣</h3></li>
<li class="cat-2"><i></i><h3>鞋包配饰</h3></li>
<li class="cat-3"><i></i><h3>运动户外</h3></li>
<li class="cat-4"><i></i><h3>珠宝手表</h3></li>
<li class="cat-5"><i></i><h3>手机数码</h3></li>
<li class="cat-6"><i></i><h3>办公家电脑</h3></li>
<li class="cat-7"><i></i><h3>护符彩妆</h3></li>
<li class="cat-8"><i></i><h3>母婴用品</h3></li>
<li class="cat-9"><i></i><h3>其他分类</h3></li>
</ul>
</div>
</body>

效果图如下:

后续在涉及到小图标比较多的情况下,可以制作雪碧图,使用 i标签,然后通过控制对应背景图片的X轴和Y轴距离来实现显示不同图表的效果。

sprite学习的更多相关文章

  1. cocos代码研究(1)sprite学习笔记

    各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...

  2. CSS3与页面布局学习总结(五)——Web Font与Sprite

    一.web font web font是应用在web中的一种字体技术,在CSS中使用font-face定义新的字体.先了解操作系统中的字体: a).安装好操作系统后,会默认安装一些字体,这些字体文件描 ...

  3. iOS7 Sprite Kit 学习

    iOS7 Sprite Kit 学习 iOS 7有一个新功能 Sprite Kit 这个有点类似cocos2d 感觉用法都差不多.下面简单来介绍下Sprite Kit About Sprite Kit ...

  4. Cocos2d-x 3.1.1 学习日志7--7分钟让你了解cocos2d-x3.1.1 Sprite精灵类

    精灵(Sprite)是游戏里面的角色,比方敌人.游戏里面运动的物体等等,所以精灵是游戏里面一个很常见的概念.差点儿无处不在. 在Cocos2D-x里面精灵是用Sprite类来进行表示的,它能够用一张图 ...

  5. Cocos2d-x 3.2 学习笔记(五)Sprite Node

    游戏中最重要的元素Sprite精灵,关于精灵的创建,精灵的控制等等. 涉及到的类Class: AnimationFrame 动画帧. Animation 动画对象:一个用来在精灵对象上表现动画的动画对 ...

  6. cocos2d-x 3.1.1 学习笔记[2]Sprite 精灵

    Sprite应该是用到最多的一个类吧.无法想像一个游戏没有精灵将怎样进行愉快的玩耍. Sprite继承于Node 和 TextureProtocol. Sprite是一个2d的图像. Sprite能够 ...

  7. ios学习之路四(新建Sprite Kit 项目的时候出现apple LLVM 5.0 error)

    在新建sprite kit 项目的时候出现"apple LLVM 5.0 error" 解决方法 在网上搜索,stackoverflow 上是这么说的点击打开链接.按照他的我也没解 ...

  8. Cocos2d-x shader学习3: sprite描边(Outline)

    Cocos2d-x 3.x的label使用了freetype字体引擎(http://www.freetype.org/),可以很轻松的实现描边和阴影效果.所以本篇文章只针对于sprite来实现描边效果 ...

  9. Cocos2d-x 3.x 学习笔记(6):Sprite SpriteFrameCache Texture2D TextureCache

    1. 概述 TextureCache是对Texture2D纹理的缓存,SpriteFrameCache是对SpriteFrame的缓存,每个SpriteFrame是对Texture2D的封装,Spri ...

随机推荐

  1. java流对象

    Java和C++都是静态类型的面向对象编程语言 stream结尾都是字节流,reader和writer结尾都是字符流 区别: 就是读写的时候一个是按字节读写,一个是按字符. 实际使用通常差不多. 在读 ...

  2. robocopy——Windows下的高效文件拷贝

    1. 基本用法 C:\Users\>RoboCopy /? ------------------------------------------------------------------- ...

  3. 《DSP using MATLAB》Problem 8.27

    7月底,又一个夏天,又一个火热的夏天,来到火炉城武汉,天天高温橙色预警,到今天已有二十多天. 先看看住的地方 下雨的时候是这样的 接着做题 代码: %% ----------------------- ...

  4. 前端之CSS初识

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. C#窗体随意移动

    //全区域移动 const int WM_NCLBUTTONDOWN = 0xA1; const int HT_CAPTION = 0x2; [DllImport("user32.dll&q ...

  6. RocketMQ补偿方案架构设计

    RocketMQ作为消息中间件,在系统异步化架构中,应用非常广泛.但是我们在享用RocketMQ的同时,也不能百分百完全信赖它.一旦RocketMQ崩溃了,给我们业务带来的也将是毁灭性打击. 因此,我 ...

  7. mapduce简介

    原文引自:http://www.cnblogs.com/shishanyuan/p/4639519.html 1.环境说明 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shi ...

  8. SPOJ - UOFTCG 树的最小路径覆盖

    //SPOJ - UOFTCG 树的最小路径覆盖 #include <bits/stdc++.h> #include <vector> using namespace std; ...

  9. List--列表合成

    1,基本规则是,一对中括号里面包含一个表达式,表达式里可以有for语句,还可以有分支的for或者if语句. 2,例如: 3,列表合成可以快速地合并多个列表. 例如: 当然还可以直接加:[1, 2, 3 ...

  10. 如何正确使用 Flink Connector?

    本文主要分享 Flink connector 相关内容,分为以下三个部分的内容:第一部分会首先介绍一下 Flink Connector 有哪些.第二部分会重点介绍在生产环境中经常使用的 kafka c ...