CSS Sprite定位实现

何为CSS Sprite

通常我们把它叫做CSS图像拼合技术,当然还有人把CSS Sprites叫做”CSS贴图定位”。

原理

CSS Sprites 原理:其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置。

优点

  1. 利用CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这也是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;
  2. CSS Sprites能减少图片的字节,曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。
  3. 解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名,从而提高了网页的制作效率。
  4. 更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。维护起来更加方便。

如何制作合并图片

  • CSS Sprites生成工具
  • 用PS制作生成

CSS Sprite定位实现(PS确定X,Y)

预备知识

  • DIV+CSS基础(尤其是background及background-position这两个参数)
  • PS基础

素材–png格式


获取图片位置

  1. 打开PS,点击右侧的信息栏
  2. 使用辅助线工具确定位置
  3. 查看图标与图标之间的间隔(手动制作这个图片的时候最好均排,方便推算,,这图就是相隔20px) ,看图

Tips:

  • background-position是以图片的左上角为基准的,也就是0 0
  • 参数可以像素和百分比混合使用(eg:5px 20%),只有一个参数的时候,另一个参数默认为50%

代码实现(CSS内含注释)

HTML: index.html

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>CSS_Sprite</title>
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
       <h1>只取一部分做演示</h1>
        <div class="content">
          <ul>
            <li><a href="#"><i class="icon_fdj"></i></a></li>
            <li><a href="#"><i class="icon_xj"></i></a></li>
            <li><a href="#"><i class="icon_dy"></i></a></li>
            <li><a href="#"><i class="icon_xx"></i></a></li>
          </ul>
          <ul>
            <li><a href="#"><i class="icon_xxk"></i></a></li>
            <li><a href="#"><i class="icon_bjb"></i></a></li>
            <li><a href="#"><i class="icon_dw"></i></a></li>
            <li><a href="#"><i class="icon_bq"></i></a></li>
          </ul>
          <ul>
            <li><a href="#"><i class="icon_info"></i></a></li>
            <li><a href="#"><i class="icon_infoa"></i></a></li>
            <li><a href="#"><i class="icon_qes"></i></a></li>
            <li><a href="#"><i class="icon_cz"></i></a></li>
          </ul>
          <ul>
            <li><a href="#"><i class="icon_hb"></i></a></li>
            <li><a href="#"><i class="icon_dp"></i></a></li>
            <li><a href="#"><i class="icon_fj"></i></a></li>
            <li><a href="#"><i class="icon_ck"></i></a></li>
          </ul>
        </div>
</body>
</html>


CSS: style.css

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/*CSS reset*/

h1{
  text-align:center;
  font-size:30px;
  font-weight:bold;
}

.content
{
    width: 176px;
    height: 176px;
    margin: 0 auto;
    border:2px solid #2af1d6;
    padding: 10px;

}
/*主块大小,位置*/

ul
{
    list-style: none;
    display: inline-block;
}
/*取消列表样式,设置内联块*/

i
{
    display: block;
    margin:10px;
    width: 17px;height:17px;background: url(../img/cssspirit.png) no-repeat;
}
/*设置图标为块,定义宽高及背景*/

ul li a:link{text-decoration: none;} /*取消下划线*/
ul li a:hover .icon_fdj{
  background-position:-21px -132px;
}
ul li a:hover .icon_xj{
  background-position:-62px -132px;
}
ul li a:hover .icon_dy{
  background-position:-102px -132px;
}
ul li a:hover .icon_xx{
  background-position:-122px -132px;
}

ul li a:hover .icon_xxk{
  background-position:-21px -152px;
}
ul li a:hover .icon_bjb{
  background-position:-62px -152px;
}
ul li a:hover .icon_dw{
  background-position:-102px -152px;
}
ul li a:hover .icon_bq{
  background-position:-122px -152px;
}

ul li a:hover .icon_info{
  background-position:-21px -172px;
}
ul li a:hover .icon_infoa{
  background-position:-62px -172px;
}
ul li a:hover .icon_qes{
  background-position:-102px -172px;
}
ul li a:hover .icon_cz{
  background-position:-122px -172px;
}
ul li a:hover .icon_hb{
  background-position:-21px -192px;
}
ul li a:hover .icon_dp{
  background-position:-62px -192px;
}
ul li a:hover .icon_fj{
  background-position:-102px -192px;
}
ul li a:hover .icon_ck{
  background-position:-122px -192px;
}
/*浮动背景位置*/

.icon_fdj{
  background-position: -1px -132px;
}
.icon_xj{
  background-position:-42px -132px;
}
.icon_dy{
  background-position:-82px -132px;
}
.icon_xx{
  background-position:-122px -132px;
}

.icon_xxk{
  background-position:-1px -152px;
}
.icon_bjb{
  background-position:-42px -152px;
}
.icon_dw{
  background-position:-82px -152px;
}
.icon_bq{
  background-position:-122px -152px;
}

.icon_info{
  background-position:-1px -172px;
}
.icon_infoa{
  background-position:-42px -172px;
}
.icon_qes{
  background-position:-82px -172px;
}
.icon_cz{
  background-position:-122px -172px;
}
.icon_hb{
  background-position:-1px -192px;
}
.icon_dp{
  background-position:-42px -192px;
}
.icon_fj{
  background-position:-82px -192px;
}
.icon_ck{
  background-position:-122px -192px;
}
/*基本的定位*/

效果图

时间: 2024-10-13 07:00:46

CSS Sprite定位实现的相关文章

前端试题-什么是css sprite?优缺点?

CSS Sprite是一种网页图片应用处理方式.它允许将一个页面涉及到的所有零星图片都包含到一张大图中去,这样,在访问页面时,就只需请求一次就可以了,而不必一次次向服务器发送请求. 它的原理就是把见面中一些背景图片整合到一张图片文件中,再利用CSS的"background-image","background-repeat","background-position"的组合进行背景定位,实现多个位置的背景,一张图来搞定. 优点 1 减少网页的ht

CSS Sprite笔记

1. 什么是CSS Sprite 将一些碎小的图片拼接为一张大点的图片来使用,目的是为了减少浏览器的http请求次数以提高网页的加载速度.每次请求图片都需要跟服务器建立一次连接,并且浏览器的最大并发请求数是有限制的.使用雪碧图并不能减少传送的数据的总量,但可以通过节省掉一部分建立.关闭连接的时间来加快网页的加载速度. 2. 如何使用 2.1 怎么得到雪碧图? ※ 直接手动拼接,只要可以将需要用到的小图片拼在一张图片上即可,当然,拼接应该尽量遵循的原则: 尽量让这张图片以后可维护: 在保证可维护性

css sprite 雪碧图

一.什么是雪碧图? 1.我们先来看一下淘宝上面用到的雪碧图实例: a.前端展示 b.css雪碧图为 2.概念 CSS sprite在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了. 3.什么时候用到雪碧图? a.静态图片,不随用户信息的辩护而变化 b.小图片,图片容量比较小 c.加载量比较大 4.工具介绍 刚刚下载了一个比较实用的雪碧图工具Css Spri

css sprite实例

css sprite直译过来就是CSS精灵.通常被解释为“CSS图像拼合”或“CSS贴图定位”.本文章向码农们介绍css sprite使用方法和基本使用实例,需要的码农可以参考一下. 一.什么是css sprites css sprites直译过来就是CSS精灵.通常被解释为“CSS图像拼合”或“CSS贴图定位”.其实就是通过将多个图片融合到一张图里面,然后通过CSS background背景定位技术技巧布局网页背景.这样做的好处也是显而易见的,因为图片多的话,会增加http的请求,无疑促使了网

CSS Sprite的应用【转】

什么是CSS Sprite ? 不知道您在浏览yahoo.com的网页中是否注意到,yahoo在页面制作上的技术和大多数网站不一样,他们把页面上的 ICON,栏目背景啊,图片按钮啊等都有会有规则的合并一张背景图,然后用background-position来实现背景图片的定位,他们为什么要花费一些时间来合并这些CSS背景图片呢,CSS中用一张背景图做页面的技术到底有什么优势呢? 通常我们把它叫做CSS图像拼合技术,当然还有人把CSS Sprites叫做”CSS贴图定位”. 使用CSS Sprit

谈谈CSS预处理技术中for循环的应用-CSS Sprite

各种新技术的出现,推动着Web前端技术飞速发展,在提升用户体验的同时也方便开发者: 在前端优化时,我们使用CSSSprite技术,把多个图片合在一张图片上,然后通过background-image,background-position来定位现实不同效果,这样来达到减少HTTP请求,毕竟HTTP请求是相当昂贵的,但是HTTP请求是少了,开发人员工作量就大了,要定位图片不是一件很方便的事情,非常麻烦,要一个一个地计算: 其实我们可以有点技巧,让图片排列有点规律,这样可以减少大量时间: 假如我们的图

为什么我们放弃css sprite使用iconfont字体图标

说在开头 前面有一篇博客说道,项目中使用压缩和css sprite技术对图标进行分类和组合: 但随着项目的不断完善,我们也遇到了很多问题:   1.如何对图标进行分类:刚开始还比较好,我们对图标进行分类,大概有银行卡图标一类,增删改图标一类,支付类 型一类,等等.但随着,图标的不断增加和业务直接的交叉,发现分类变得很困难,渐渐失去耐心.如果,把所有图标集成到一张图:但是有这样一种情况:有些页面只使用了一个图标,同时用户只在这个页面进行操作:却要下载一整张大图,浪费资源. 2.图标位置不好控制,很

前端优化总结-服务器端-减少Http次数-图片合成css sprite

先上一张整洁的前端优化总结图(之前的一篇总结图太烂了) 以前切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算.客户每显示一张图片都会向服务器发送请求. 所以,图片越多请求次数越多,造成延迟的可能性也就越大.所以在这里我们要做的就是把网页中常用的图片整合到一张图片文件中,再利用CSS的“backg round-image”,“background- repeat”,“background-position”的组合进行背景定位,background-pos

CSS Sprite的优缺点分析

目前大多数的开发人员对这个技术都有相当地掌握,也有很多关于它的教程和文章.几乎所有的文章中都宣称设计师和开发人员都应该使用 CSS sprite 来减少 HTTP 请求数,并且节省一些流量.这个技术被大量网站使用,包括使用了大型 sprite 的 Amazon . 但是这些被广泛热议的好处真的是值得的吗?设计师们是否在没有全面考虑到所有情况的情况下,在盲目地使用这个技术呢?设计师们是不是过于关注 CSS sprite 的流行,而忽略了其它应该仔细斟酌的因素了呢? 这篇文章会讨论下使用 CSS s