sprite学习

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

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

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

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

1.   坑一

html:

<div class="cat">
2         <ul>
3             <li class="cat-1"><i></i><h3>服装内衣</h3></li>
4             <li class="cat-1"><i></i><h3>服装内衣</h3></li>
5         </ul>
6     </div>

  CSS样式:

* {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;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: 400; }

  实际显示:

原因:是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已经脱离文档流,这里的话,就相当于文字的环绕。

1 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轴距离来实现显示不同图表的效果。

时间: 2024-10-10 07:47:42

sprite学习的相关文章

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

各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x, y, 85, 121)); addChild(sprite); /*************华丽分割线*************/ //BatchNode类纹理创建法 //参数一:纹理图片 参数二:容量(子节点数量上限) auto batchN

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

游戏中最重要的元素Sprite精灵,关于精灵的创建,精灵的控制等等. 涉及到的类Class: AnimationFrame 动画帧. Animation 动画对象:一个用来在精灵对象上表现动画的动画对象. AnimationCache 动画缓存单例类. 如何你想要保存动画,你需要使用这个缓存. Sprite 精灵;定义为二维图像. SpriteBatchNode 与批量节点类似,如果包含子节点会在一次OpenGL调用内绘制完成. SpriteFrame 一个精灵帧. SpriteFrameCac

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

CSS3与页面布局学习总结(五)--Web Font与Sprite 目录 一.web font 1.1.什么是font-face 1.2.font-face优点 1.3.字体格式 1.4.使用@font-face 1.4.1.下载字体 1.4.2.使用font-face将字体引入web中 1.4.3.应用字体 1.4.4.字体格式转换 1.4.5.查看字体编码 1.4.6.base64内嵌字体 二.CSS Sprite 2.1.将小图片合并 2.2.使用CSS分离图片 2.3.小结 三.示例下载

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

精灵(Sprite)是游戏里面的角色,比如敌人,游戏里面运动的物体等等,所以精灵是游戏里面一个非常常见的概念,几乎无处不在.在Cocos2D-x里面精灵是用Sprite类来进行表示的,它可以用一张图片或者一张图片的一块矩形部分来定义. 在自己设计的MyScene类中,我写了六种常用精灵的出现方式.分别是sp1,sp2,sp3,sp4,sp5,sp6.上代码: bool MyScene::init() { Size size = Director::getInstance()->getWinSiz

Unity学习笔记:Sprite切割图片及使用

导入一张大图和导入多张小图哪种更好?  --  这不是本文的内容! 一般动画用的帧图都是在一张大图里的. 切割 1.拖拽一张大图进入Assets/Resources目录下. 注意:只有在Resources目录下的资源才能在代码中被Resources类获取到. 2.进入切割 点击[Sprite Editor]按钮,显示切割页面.仅介绍网格切割(Type = Grid By Cell Size),其它形式以后再学. Pixel Size 单元格尺寸: Offse 单元格内的左侧(x)和上方(y)的留

Cocos2dx学习笔记7:精灵(Sprite)

Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染.在游戏里,精灵是一个重要的概念,游戏背景.NPC.人物.道具等.在cocos2d-x引擎中,只要是用图片展示的,基本上需要使用精灵类. 一.创建精灵常见的三种方法: 1.直接使用Sprite的create方法创建 auto sprite = Sprite::create("HelloWorld.png");//创建一个精灵 this->addChild(sprite, 0);

Unity插件之NGUI学习(2)—— 创建Texture和Sprite

首先删除当前的MainCamera并保存当前的scene 选择菜单NGUI->Create->2D UI 添加后显示 Directional light是过后添加的直射光线 在Hierarchy窗口选择Camera,在Inspector窗口中,UICamera的Event Type选择2D UI. 然后在Build Settings...切换Android平台,下一步很重要,在UI Root选择Scaling Style为FixedSizeOnMoblies,一开始是默认的PixelPerfe

百度前端学习日记19——CSS sprite(雪碧图)

原理 如图所示,无黑影处为浏览器中会显示的部分,通过改变backgroundPosition来使显示的地方不同,从而达到更换背景的目的 更多 浅谈CSS Sprite和实例解析 CSS Sprites:实用技术还是生厌之物? 原文地址:https://www.cnblogs.com/no-wing/p/9325669.html

Unity插件之NGUI学习(4)—— 创建UI2DSprite动画

创建一个新的Scene,并按 Unity插件之NGUI学习(2)创建UI Root,并在UI Root的Camera下创建一个Panel. 然后在选中Panel,在菜单中选择NGUI->Create->Unity 2D Sprite 查看Inspector窗口 接着是在Unity中制作Sprite: 在Project窗口创建Textures文件夹,并从外部拖入一些图片素材,然后选中需要转成Sprite的图片,然后在Inspector窗口进行转变Sprite的操作,如图. 选择Sprite(2D