一、 什么是css sprites

CSS Sprites通常被称为css精灵图,在国内也被意译为css图片整合和css贴图定位,也有人称他为雪碧图。就是将导航的背景图,按钮的背景图等有规则的合并成一张背景图,即多张图合并为一张整图,然后再利用background-position进行背景图定位的一种技术。

二、为什么需要css sprites

CSS Sprites 并不是一门新的技术了,目前他发展的已经比较成熟,阿里巴巴、百度、谷歌等各公司的网页中到处都可以发现CSS Sprites 的影子。他是网页里常见的一种图片应用处理方式,他允许你将一个页面里所涉及到的所=有的零星的图片都整合到一张大图中去,这样一来,当访问这个页面时,所加载的图片就不会像以前那样一张一张的慢慢显示出来了,对于当前的网络所流行的速度来说,不超出200kb的单张图片所需要的加载时间基本是差不多的,节省加载速度的关键不是降低重量,而是减少个数,就因为计算机都是按照byte计算。页面每显示一张图片都会向服务器发送一次请求。所以,图片越多,所请求的次数就越多。为了减少HTTP的请求次数,很多网站的导航背景图、登录框、按钮背景图等并不使用

很多网站的导航栏图标、登录框图片等,使用的并不是<img>标签,而是CSS Sprite。本课程分析了CSS Sprite的实现原理,详细讲解制作方法,实现完整效果,让你快速掌握CSS Sprite技术。

三、CSS Sprites的优势

在很多情况下,它有着一定的优势,最重要的是它可以减轻服务器的负担,提高网页的加载速度。

因为假我们现在有9张小图片,(例1)那么就会就有9个HTTP请求,但是如果把这九张小图放在一张大图里,那就只需要请求1次,因为你要的9个小图都在一张大图里了,请求一次后不用再次发送HTTP请求去请求图片资源。

例1.

当页面加载时,不是去加载每一个单独的图片,而是一次加载整个组合图片。它大大减少了HTTP请求的次数,减轻服务器的压力,同时也缩短了悬停时候加载图片所需要的时间延迟,使效果更流畅。

随着页面设计向着精致、 巧妙的方向发展,便开始考虑用非Js的方法制作鼠标滑过、悬停菜单的效果,这时精灵图应运而生。

先看效果:

首先,是在正常模式下浏览:

然后,是在鼠标悬停的时候浏览:

最后,是在鼠标点击链接的时候浏览:

这样过渡的非常自然。具体用到的图片如下:

其实,刚才的鼠标悬停和点击链接的图片切换,就是通过位置控制取自bg2_btn.jpg,下面是具体实现方法:

首先是html页面源代码:

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>nav</title>
<link href="mydemo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div> <img src="data:image/logo/logo2.jpg" alt="wenqi's blog" />
</div>
<!------- 导航2 ------->
<div class="menu2"> <div class="left2"></div> <div class="center2"> <a href="#">Blog</a> <a href="#">Themes</a> <a href="#">Service</a> <a href="#">About</a> <a href="#">Help</a>  </div> <div class="right2"></div> <div class="clear"></div>
</div>
</body>
</html> 其次就是css的代码: 代码如下:html
{
width:100%;
height:100%;
}
body
{
background-color:#fff;
font-size:18px;
font-family:"Arial","Tahoma","微软雅黑","雅黑";
line-height:18px;
padding:0px;
margin:0px;
text-align:center;
}
/* www.codefans.net */
a
{
display:block;
float:left;
}
del,div.clear
{
height:0px;
font-size:0px;
line-height:0px;
padding:0px;
margin:0px;
display:block;
clear:both;
overflow:hidden;
}
div
{
width:550px;
text-align:left;
margin:auto auto auto auto;
}
.menu2
{
font-size:14px;
line-height:14px;
margin-bottom:24px;
}
.menu2 .left2
{
width:5px;
height:47px;
background:url("image/navigation/bg2_left.jpg") no-repeat left top;
float:left;
}
.menu2 .center2
{
width:540px;
height:47px;
background:url("image/navigation/bg2_center.jpg") repeat-x left top;
float:left;
}
.menu2 .right2
{
width:5px;
height:47px;
background:url("image/navigation/bg2_right.jpg") no-repeat left top;
float:left;
}
.menu2 a:link,.menu2 a:visited
{
color:#585858;
width:77px;
height:30px;
padding-top:17px;
background:url("image/navigation/bg2_btn.jpg") no-repeat left -94px;
text-align:center;
text-decoration:none;
}
.menu2 a:hover
{
color:#fff;
background-position:left 0px;
}
.menu2 a:active
{
color:#fff;
background-position:left -47px;
}
复制代码

其实 主要的是这一段:

代码如下:

.menu2 a:link,.menu2 a:visited
{
color:#585858;
width:77px;
height:30px;
padding-top:17px;
background:url("image/navigation/bg2_btn.jpg") no-repeat left -94px;
text-align:center;
text-decoration:none;
}
复制代码

利用了图片整合图,将图片经过准确的切割,而且使用background-position来控制,就可以做到js的控制效果。

要做出这种效果还要学习怎样把小图排版成大图,以便于更容易去测量位置,且不会互相影响。

例2.

谷歌:

土豆:

淘宝:

其中小图之间的排版是有些点规律的,比如说淘宝这张,类似的小图都放置成同一列,这样就计算小图显示位置的时候,只需要知道第一个小图标的位置就可以了,同一列的小图, X坐标一样,只需要改Y坐标的位置。这样就方便了许多。用到的css属性是background-image、background-position、background-repeat、这几个属性。或者使用background这个复合属性写在一起就好。

利用CSS Sprites能很好地减少了网页的http请求,从而大大的提高了页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;个人认为CSS Sprites能减少图片的字节,我曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。

四、css sprites实例示例教程

1、素材与要实现的效果

2、sprites实例教程解释介绍

首先这些素材图标都是用ps放在同一张图片上,然后实现成列表类布局。使用css sprites实现此布局然后使用background样式进行实现。

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

3、实例教程准备 1)、图标素材,这里直接为大家提供拼接好的图标素材图片一张,命名为“bg.png”,如下图,可直接另存为保存使用。

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

html代码:

<ul class="Sprite"> <li><span class="a1"></span><a href="#">我的主页</a></li> <li><span class="a2"></span><a href="#">新闻头条</a></li> <li><span class="a3"></span><a href="#">电视剧</a></li> <li><span class="a4"></span><a href="#">最新电影</a></li> <li><span class="a5"></span><a href="#">小说大全</a></li> <li><span class="a6"></span><a href="#">旅游度假</a></li> </ul>
复制代码

为了区别不同效果,对不同的span标签加入不同的class名称。

css代码:

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

css sprite关键代码与解释

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

重点:背景background-position属性有两个值,第一个代表水平位置的值(可为正可为负),第二个代表垂直方向的值(可为正可为负),当为正数时,代表背景图片作为对象盒子背景图片时靠左和靠上多少开始显示背景图片;当为负数时代表背景图片作为盒子对象背景图片,将背景图片超出盒子对象左边多远,超出盒子对象上边多远开始显示此背景图片。

CSS sprites技巧技术总结

CSS sprites其实就是对background样式的扩展应用,以前设置背景图位置时常见为正数,设置背景靠左靠上距离多少像px开始显示图片,为负数值后,是将图片拖离左边上边多少像素开始显示图片,同时需要学会photoshop工具精确量出距离值。

css sprites精灵图、css图片整合、css贴图定位案例教程相关推荐

  1. CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图

    CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图   一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-positio ...

  2. html精灵图的hover状态,css图片精灵图标怎么使用?

    css精灵图(sprite)直译为"CSS精灵",也被称为通常被解释为"CSS图像拼合"."CSS贴图定位"或"CSS图片精灵&q ...

  3. CSS高级技巧——精灵图

    1. 精灵图 为什么需要精灵图 精灵图的使用 精灵图的案例 1.1为什么需要精灵图         在平常上网过程中,打开网址就可以看到网页了,网页中会有许多的小图标及图片,会像服务器去请求某个小图标 ...

  4. html精灵图跟img标签,css精灵图怎么使用?

    什么是css精灵图(sprite)?css精灵图怎么使用?下面本篇文章就来给大家介绍一下css精灵图的使用.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 在了解精灵图怎么使用前,我 ...

  5. CSS Sprite “精灵图“

    CSS Sprite CSS Sprites叫 CSS精灵或者雪碧图,是一种网页图片应用处理方式. CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中. 再利用CSS的" ...

  6. 前端性能优化 CSS之“精灵图”

    文章目录 1.为什么需要学习精灵图 2. 获取精灵图 3.使用精灵图 示例1: 示例2 4.使用精灵图的核心总结 1.为什么需要学习精灵图 我们都知道一个网站离不开数量非常多的图片,假设每一张图片都要 ...

  7. 利用CSS绘制精灵图

    素材: 主要用到的工具和CSS属性: 绘制精灵图主要用到的是background-position属性,然后利用PS测量数据.background-position属性值主要见下图: 利用PS测量距离 ...

  8. 精灵图(sprite)CSS动画实现

    精灵图 动画效果如下 HTML代码 <div class="boxA"></div> css代码 .boxA {width: 100px;height: 4 ...

  9. css如何实现菱形背景图片,使用CSS 实现菱形图片,斜条纹背景

    比较简单的菱形图片: 效果如下 代码部分: .d1{ margin-left: 100px; display: inline-block; transform: rotate(45deg); over ...

最新文章

  1. 02移动端布局基础之流式布局项目实战(京东移动端首页)
  2. java实现条件编译
  3. 找出SAP OData service出错根源的小技巧
  4. erlang的dict源码解析(1)
  5. 外连接有 OR 关联条件只能走 NL优化
  6. MySQL时间段查询,无数据补0
  7. RookeyFrame 隐藏 首次加载菜单 的伸缩动画
  8. 拆分是解决大规模应用问题的本质
  9. 很好用的查看PE文件的小工具---LordPE Deluxe 1.4 汉化版
  10. 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之一:产品篇
  11. python解析sql字段血缘_数据仓库内表格的血缘关系追溯的方法和装置与流程
  12. 游轮旅游是三亚旅游的未来
  13. 寒假每日一题 2 : 干草堆 java
  14. 在数据库中如何新增一个字段?
  15. 23中北大学计算机/软件考研必知
  16. java 视频转换 avi 转 MP4
  17. FTP voyager使用配置参考
  18. SEO网站诊断技巧-网站诊断书怎么写!!!
  19. 关于代码审查的一些探讨和总结
  20. asp毕业设计——基于asp+access的出租车管理系统设计与实现(毕业论文+程序源码)——出租车管理系统

热门文章

  1. 西门子 SMART PLC 扫码串口通讯
  2. 小白知识之:画图软件中文字横横竖竖的奥秘
  3. Nervos 双周报第 7 期:Dev Meetup 正式更名为 Crypto Wednessday 啦!
  4. Locust使用手册--编写一个locustfile
  5. 落实交通强国,鄂州临空区联手蘑菇车联打造新时代内陆开放高地
  6. 如果让你设计铁道部购票网站,你怎么做
  7. 手写字体识别 --MNIST数据集
  8. HDC.Cloud 华为开发者大会2021.04.24 学习记录
  9. 1971旗舰cpu intel_最强CPU诞生:Intel正式发布Xeon E7 v4系列处理器 - IT之家
  10. 前端跨域问题汇总及解决方案