css sprite讲解与使用实例

转自:http://www.manongjc.com/article/886.html

一、什么是css sprites

css sprites直译过来就是CSS精灵。通常被解释为“CSS图像拼合”或“CSS贴图定位”。其实就是通过将多个图片融合到一张图里面,然后通过CSS background背景定位技术技巧布局网页背景。这样做的好处也是显而易见的,因为图片多的话,会增加http的请求,无疑促使了网站性能的减低,特别是图片特别多的网站,如果能用css sprites降低图片数量,带来的将是速度的提升。

css sprites是什么通俗解释:CSS Sprites其实就是把网页中一些背景图片整合拼合成一张图片中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片在布局盒子对象位置。

 

二、适合与不适合CSS sprites拼合布局 

1、适合:一般小图标素材

小的图标ico类素材,一般图标很小十多像素几十像素的宽度高度,这种适合拼合成一张图实现sprites background背景定位布局。多小ico太多自然加载网页时瞬间会消耗些http iis链接数,但很快加载完又会释放。

2、不适合:大图大背景

大背景一般用于网页背景,拼合时,设置为网页背景时所有背景都会显示出来。大图拼接拼合会增大图片大小,网络带宽不好的访问者访问时由于背景图大文件大会加载稍慢些,所以大图不推荐拼接拼合来使用css sprites背景定位布局。

3、sprites适合推荐小结

一般此sprites拼合布局用于局部小盒子布局不适合大背景大布局背景使用。比如小局部布局小图标背景、小导航背景等CSS布局。

 

三、css sprites优势与缺点劣势判断选择

1、sprites优势:

若干小图标拼合成一张图后布局,减少http iis请求数,对于大战大流量网站来说隐形优势很显然的,从而隐形地提升了网站性能。对于大流量网站来说本来http请求数比较宝贵,使用CSS Sprites这样可以大大的提高了页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因,同时也减少图片文件数目。


2、sprites缺点

在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好只够的空间,防止板块内不会出现不必要的背景,如果留空间或拼合位置不合适,在布局时容易出现布局这个盒子对象时,设置背景出现拼合相邻图片,干扰图片的情况;

CSS Sprites在开发的时候比较麻烦,你要通过photoshop(PS)或其他工具测量计算每一个背景单元的精确位置,这是针线活,没什么难度,但是很繁琐;

CSS Sprites在维护的时候比较麻烦,sprites是一般双刃剑,如果页面背景有少许改动,一般就要改这张合并的图片,无需改的地方最好不要动,这样避免改动更多的css,如果在原来的地方放不下,有只能(最好)往下加图片,这样图片的字节就增加了,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐,而且重新算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情

由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。

3、推荐小结

由于拼接图片需要一定经验技巧(做实践即可快速掌握)、测量定位数值、修改不是那么灵活等原因,一般小网站站、小流量网站、一般企业网站不是很推荐使用CSS Sprites,因为使用CSS Sprites会比普通单个背景图片布局要耗费时间和精力,所以不是很推荐小站。但这个布局技巧也必须要学会掌握灵活布局才是目的。小站HTTP请求数丰富这点拼接其实也起不来什么优势反而会浪费宝贵时间。相反大网站大流量网站推荐使用,这样比较值得。

 

四、css sprites实例示例教程 

1、素材与要实现效果截图

css sprites实例示例教程

2、sprites实例教程解释介绍

首先这些图标素材是放在同一张图片上(PS拼合),然后实现成列表类布局,列表每个前图标不同。使用css sprites实现此布局(其实使用background样式实现)。

首先此列表布局我们使用ul li列表布局,每个li站一行排版,对ul设置padding实现四周内容与边框一定间距效果,因为每个li前面图标不同,但此背景图片是拼合在一张图片上,所以这里做li里开始使用span标签实现这个不同图标效果,每个图标不同为了区别span所以对span设置不同class,不同class对应设置定位相应的图标。

3、实例教程准备

1)、初始化模板使用:为了兼容各大浏览器,仍然这里使用网站提供初始化模板,在此模板基础上修改设置符合本实例CSS样式。
2)、图标素材,这里直接为大家提供拼接好的图标素材图片一张,命名为“ico.png”,如下图,可直接另存为保存使用。

css sprite讲解与使用实例

4、先布局出效果,再css sprites设置不同背景图标样式

html代码:

<ul class="Sprites"> <li><span class="a1"></span><a href="#">WORD文章标题</a></li> <li><span class="a2"></span><a href="#">PPT内容标题</a></li> <li><span class="a3"></span><a href="#">Excel内容标题</a></li> <li><span class="a4"></span><a href="#">PDF内容标题</a></li> <li><span class="a5"></span><a href="#">文本文档标题</a></li> </ul> 

为了区别不同效果对span加入不同class。

css代码:

ul.Sprites{ margin:0 auto; border:1px solid #F00; width:300px; padding:10px;} ul.Sprites li{ height:24px; font-size:14px;line-height:24px; text-align:left; overflow:hidden} ul.Sprites li span{ float:left; width:17px;padding-top:5px;height:17px; overflow:hidden;background:url(ico.png) no-repeat} ul.Sprites li a{ padding-left:5px} 

效果截图

css sprite讲解与使用实例

css sprites关键代码与解释

首先对ul.Sprites li span引入背景
ul.Sprites li span{ background:url(ico.png) no-repeat} 给span设置css背景图片。
再分别对不同span class设置对于图标背景定位具体值
ul.Sprites li span.a1{ background-position: -62px -32px}设置背景图片作为对应盒子对象背景后向左“拖动”62px,向上“拖动”32px开始显示此背景图标
ul.Sprites li span.a2{ background-position: -86px -32px}设置背景图片作为对应盒子对象背景后向左“拖动”86px,向上“拖动”32px开始显示此背景图标
ul.Sprites li span.a3{ background-position: -110px -32px}设置背景图片作为对应盒子对象背景后向左“拖动”110px,向上“拖动”32px开始显示此背景图标
ul.Sprites li span.a4{ background-position: -133px -32px}设置背景图片作为对应盒子对象背景后向左“拖动”133px,向上“拖动”32px开始显示此背景图标
ul.Sprites li span.a5{ background-position: -158px -32px}设置背景图片作为对应盒子对象背景后向左“拖动”158px,向上“拖动”32px开始显示此背景图标

关键:背景background-position有两个数值,前一个代表靠左距离值(可为正可为负),第二个数值代表靠上距离值(可为正可为负)
背景background-position有两个数值可以为正可以为负,当为正数时,代表背景图片作为对象盒子背景图片时靠左和考上多少距离多少开始显示背景图片;当为负数时代表背景图片作为盒子对象背景图片,将背景图片拖动超出盒子对象左边多远,拖动超出盒子对象上边多远开始显示此背景图片。

 

CSS sprites技巧技术总结 

CSS sprites其实就是对CSS背景background样式的扩展应用,以前设置背景background-position常见为正数值,设置背景靠左靠上距离多少像素开始显示图片,为负数值后,是将图片拖离左边上边多少像素开始显示图片,下载本案例多次修改修改数值,观察观察能找到规律很快就会作为此技巧,同时学会PS切片工具获取距离值。

转载于:https://www.cnblogs.com/sharpest/p/6295137.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验 2 关键字驱动测试(2 学时)实验报告--软件功能测试与性能测试实验

以下是实验要求部分&#xff1a;&#xff08;小伙伴们根据自己需求决定是否下载哈&#xff09; 下载位置链接&#xff1a;https://download.csdn.net/download/qq_44872173/20031354

小手工纸盒机器人_亲子手工 | DIY弹珠迷宫小黑手自制玩具系列

上周用鞋盒做的迷你桌球受到很多男孩子的喜欢今天小黑手又做了一个瓦楞纸手工「弹珠迷宫」也是喜欢的爱不释手呢暑假小黑手系列&#xff0c;希望也能攒出个自己的小游乐场自己动手做自己的玩具&#xff0c;买玩具的钱可以省了快速手工教程Let’s do it我们一起做起来吧&#xf…

Linux screen 常用命令

想必&#xff0c;只要接触过Linux一段时间的人&#xff0c;一定知道screen这个神奇的工具了&#xff0c;它主要有如下些优势&#xff1a; 1. 后台运行&#xff1a;当你在ssh terminal执行shell时&#xff0c;如果网络这时断开&#xff0c;你的程序会怎样&#xff1f;TERMINATED…

实验 3 检查点和参数化实验报告--软件功能测试与性能测试实验

实验报告下载链接&#xff1a; https://download.csdn.net/download/qq_44872173/20031539 实验要求部分&#xff1a;

C#中的语句

寄语接下来几篇文章&#xff0c;将和大家一起简单回顾下C#中常规的语法&#xff0c;也是平常我们在编码过程中都使用的。今天来介绍下C#中的语句。一般科班出身的程序猿们大家第一个学习的语言基本都是C语言&#xff0c;C语言里面在刚开始就介绍了语句。C#中介绍的语句和C中的基…

track文件 什么是git_Git 从入门到放弃命令大全

对于刚学 Git 的朋友来说太痛苦了&#xff0c;一堆命令&#xff0c;于是就有了这篇文章&#xff0c;对于常用的命令进行梳理。Workspace&#xff1a;工作区Index / Stage&#xff1a;暂存区Repository&#xff1a;仓库区(或本地仓库)Remote&#xff1a;远程仓库1. 初始化 在当前…

【51NOD】1201 整数划分

【题意】将n划分成不同正整数的和的方案数。 【算法】动态规划 【题解】 暴力&#xff1a;f[i][j]:只用前1..i的数字&#xff0c;总和为j的方案数 本质上是01背包&#xff0c;前i个物体&#xff0c;总质量为j的方案数 f[i][j]f[i-1][j]f[i-1][j-i] 复杂度O(n^2) 优化&#xff1…

linux c之assert函数使用总结

1、assert函数介绍 assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a;#include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression &#x…

Activity加载View调用顺序

2019独角兽企业重金招聘Python工程师标准>>> 在Activity的onCreate方法中&#xff0c;可以通过setContentView()方法来设置此Activity要显示的界面。在xml中的布局文件需要先解析成View树才能加载显示&#xff0c;通过View的onMeasure,onLayout,onDraw方法完成View的…

使用 kube-bench 和 kube-hunter 对 Kubernetes 集群风险评估

点击上方蓝字关注 &#x1f446;&#x1f446;↓推荐关注↓随着 Kubernetes 越来越受欢迎&#xff0c;门槛也越来越低。但是安全问题仍然存在&#xff0c;下面介绍两个审计集群安全的开源工具。kube-benchkube-bench[1] 是一个 Go 应用程序&#xff0c;拥有 4.5k star。用于检查…

实验 4 操作、输出值和数据表实验报告--软件功能测试与性能测试实验

下载链接&#xff1a; https://download.csdn.net/download/qq_44872173/20031742

easyui 排序实现

1.对easyui datagrid 返回的数据&#xff0c;进行排序处理&#xff0c;便于搜索到我们的有用的信息。 例如&#xff1a; 2.datagrid 需要设置 sortable : true {field : crtTime,title : 创建时间,width : 100,sortable :true,align : center,formatter : crtTimeFtt}, 3.F12…

hm编码工具使用_H.265视频编码与技术全析(下)

H.265视频编码与技术全析&#xff08;下&#xff09;四&#xff0e;帧内预测模式共35个&#xff08;h264有9个&#xff09;&#xff0c;包括Planar&#xff0c;DC&#xff0c;33个方向模式&#xff1a;除了Intra_Angular预测外&#xff0c;HEVC还和H.264/MPEG-4 AVC一样&#x…

redmine安装指引

为什么80%的码农都做不了架构师&#xff1f;>>> 1 前言 本文记录了在window7下面安装redmine的操作过程&#xff0c;同时也为其他有兴趣安装redmine的同学提供帮助。 2 环境说明 操作系统&#xff1a;window7 64位 数据库&#xff1a;mysql-5.5.36-winx64 Red…

.NET 诞生已20周年,您的 .NET 技能是否还停留在2010 年?

20年来&#xff0c;我们见证了超过上千万.NET 开发员&#xff0c;当前有600万.NET 开发者正在使用.NET技术构建各类解决方案。今天&#xff0c;IT市场对.NET 开发人员的需求达到了前所未有的程度,特别是在中国&#xff0c;各大公司对.NET 程序员的需求用火爆来形容都不为过&…

实验 5 性能测试脚本录制和开发实验报告--软件功能测试与性能测试实验

实验内容&#xff1a; 下载链接&#xff1a; https://download.csdn.net/download/qq_44872173/20031769

MySQL-5.5.33主从复制

搭建主从同步需要在两个电脑上分别安装 MySQL &#xff0c;我这里安装的是 CentOS6.7 64位&#xff0c;MySQL-5.5.33。MySQL 是二进制包安装的&#xff1a;http://aby028.blog.51cto.com/5371905/1892818两台的操作是一样的&#xff0c;要求能够登陆 mysql 数据库即可。主从地址…

C#中的数据字典Dictionary

前言今天上午和往常一样在网上冲浪,看到码甲哥微信群里面在聊一个面试题&#xff0c;比较有意思&#xff0c;这里简单分享下结论中的Dictionary字典。有50w个int类型的数字&#xff0c;现在需要判断一下里面是否存在重复的数字&#xff0c;请简要说明下。假如这个题目让我做&am…

实验 6 场景创建与执行 实验报告--软件功能测试与性能测试实验

下载链接&#xff1a; 下载链接&#xff1a; https://download.csdn.net/download/qq_44872173/20031798 内容&#xff1a;