CSS 图像精灵
图像精灵(Image Sprites)
图像精灵是放入一张单独的图片中的一系列图像。
包含大量图像的网页需要更长时间来下载,同时会生成多个服务器请求。
使用图像精灵将减少服务器请求数量并节约带宽。
图像精灵 - 简单的例子
我们使用这幅单独的图像 ("img_navsprites.gif"),而不是三幅独立的图像:
通过 CSS,能够只显示我们需要的图像部分。
在下面的例子中,CSS 规定要显示 "img_navsprites.gif" 图像的哪个部分:
实例
img.home
{
width:46px;
height:44px;
background:url(img_navsprites.gif) 0 0;
}
例子解释:
因为 src 属性不能为空,所有我们定义了一幅小的透明图像。而显示的图像将是我们在 CSS 中规定的背景图像:
<img class="home" src="img_trans.gif" />
定义我们希望使用的图像部分:
width:46px;
height:44px;
定义背景图像及其位置 (left 0px, top 0px):
background:url(img_navsprites.gif) 0 0;
这是使用图像精灵的最简单的方法,现在我们希望通过链接和 hover 效果来扩展它。
图像精灵 - 创建导航列表
我们希望使用图像精灵 ("img_navsprites.gif") 来创建导航列表。
我们将使用 HTML 列表,因为它们能够充当列表,同时也支持背景图像:
实例
#navlist {position:relative;}
#navlist li {margin:0;padding:0;list-style:none;position:absolute;top:0;}
#navlist li, #navlist a {height:44px;display:block;} #home {left:0px;width:46px;}
#home {background:url('img_navsprites.gif') 0 0;} #prev {left:63px;width:43px;}
#prev {background:url('img_navsprites.gif') -47px 0;} #next {left:129px;width:43px;}
#next {background:url('img_navsprites.gif') -91px 0;}
例子解释:
把 position 设置为 relative 允许其中进行绝对定位:
#navlist {position:relative;}
外边距和内边距被设置为 0,去掉 list-style,并且所有列表项均为绝对定位:
#navlist li {margin:0;padding:0;list-style:none;position:absolute;top:0;}
所有图像的高度是 44px:
#navlist li, #navlist a {height:44px;display:block;}
现在开始定位并添加每个具体部分的样式:
定位到最左侧,图像宽度为 46px:
#home {left:0px;width:46px;}
定义背景图像及其位置 (left 0px, top 0px):
#home {background:url(img_navsprites.gif) 0 0;}
向右定位 63px (#home 宽度 46px + 项目之间的间隔),宽度是 43px:
#prev {left:63px;width:43px;}
定义背景图像向右移动 47px (#home 的宽度是 46px + 1px 的分隔线):
#prev {background:url('img_navsprites.gif') -47px 0;}
向右定位至 129px (从 #prev 的 63px 开始 + #prev 宽度 43px + extra space),宽度是 43px:
#next {left:129px;width:43px;}
定义背景图像向右 91px (#home width 46px + 1px line divider + #prev width 43px + 1px line divider ):
#next {background:url('img_navsprites.gif') no-repeat -91px 0;}
图像精灵 - Hover 效果
现在,我们希望向导航列表添加 hover 效果。
提示::hover 选择器用于在鼠标指针位于其上时选取元素。
提示::hover 选择器可用在所有元素上,不仅仅是链接。
我们的新图像 ("img_navsprites_hover.gif") 包含三幅导航图像,以及三幅用于 hover 效果的图像:
由于这是一幅单独的图像,而不是六个独立的文件,当用户将鼠标指针移动到图像上时,不会产生加载延迟。
为了添加 hover 效果,我们只加入了三行代码:
实例
#home a:hover{background: url('img_navsprites_hover.gif') 0 -45px;}
#prev a:hover{background: url('img_navsprites_hover.gif') -47px -45px;}
#next a:hover{background: url('img_navsprites_hover.gif') -91px -45px;}
例子解释:
对于所有三幅 hover 图像,我们规定了相同的背景位置,只是向下移动 45px:
#home a:hover{background: transparent url(img_navsprites_hover.gif) 0 -45px;}
CSS 图像精灵的更多相关文章
- CSS Sprites(CSS图像拼合技术)教程、工具集合
本集合是有一位国外设计师收集整合,并由 oncoding翻译成中文的,感谢他们的辛苦贡献.CSS Sprites技术在国外并不是什么新技术,只不过近两年(尤其08年开始)中国开始流行这个词,大家也开始 ...
- css 图像热区
CSS图像热区 在img标签当中,存在一个属性usemap属性,用来和map标签进行绑定,从而实现图像热区.所谓的图像热区,其实指的是在图像中插入一个连接,当用户点击图像的指定区域后就会进行页面跳转. ...
- CSS 图像居中对齐
CSS 图像居中对齐 我们在<CSS 内外边距>学过内容居中,它的原理是将外边左右设置为auto.图像居中也是这个原理. 示例 <!DOCTYPE html> <htm ...
- CSS 图像大小
CSS 图像大小 虽然在HTML中,img标签有属性height.width设置高和宽,在工作中却使用得非常少,通常使用CSS来控制大小. 给盒子设置属性height.width限制大小.单位通常是像 ...
- CSS 图像
CSS 图像 <上一节下一节> 通过CSS可以控制图像的大小和对齐方式. 图像大小 虽然在HTML中,img标签有属性height.width设置高和宽,在工作中却使用得非常少,通常使用C ...
- CSS 图像拼合技术
CSS 图像拼合技术 一.图像拼合 图像拼合就是单个图像的集合. 有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求. 使用图像拼合会降低服务器的请求数量,并节省带宽. 二.图像拼合 - ...
- CSS 图像透明/不透明
CSS 图像透明/不透明 使用CSS很容易创建透明的图像. 注意:CSS Opacity属性是W3C的CSS3建议的一部分. 一.示例一:创建一个透明图像 CSS3中属性的透明度是 opacity. ...
- css图像拼合技术(精灵图)
CSS图像拼合技术 1.图像拼合 图像拼合技术就是单个图像的集合. 有很多图片的网页可能会需要很多时间来加载和生成多个服务器的请求. 使用图像拼合会降低服务器的请求数量,并节省带宽. 图像拼合实例 有 ...
- CSS:CSS 图像拼合技术
ylbtech-CSS:CSS 图像拼合技术 1.返回顶部 1. CSS 图像拼合技术 图像拼合 图像拼合就是单个图像的集合. 有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求. 使用图 ...
随机推荐
- nginx上通过ssl证书将http转发为https
环境:阿里云linux,ngnix 1.16.0 ,ssl证书,XXXX.jar 0.自行在阿里云上下载免费的ssl证书.里面有2个文件.key和pem后面要用到. 1.首先将项目在linux上跑起来 ...
- 海思编译链编译出现__aeabi_unwind_cpp_pr1重定义怎么回事
1.用arm-hisiv100nptl-linux-gcc编译代码,结果发现报错,__aeabi_unwind_cpp_pr1重定义,在librt.a先定义,使用的海思芯片是hi3520d. 2.本来 ...
- IP,IP地址,mac地址
IP地址与IP是两个不同的概念.单独讲IP,是指IP协议 IP地址分为三类:单播地址(目的为单个主机):多播地址(目的端为同一组的所有主机):广播地址(目的端为网络上所有给定的主机) ip地址由网络和 ...
- 读高性能MySql笔记
1.1 MySQL逻辑架构 MySql服务器逻辑架构图 1.连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者 ...
- Linux主机之间ssh免密登录配置方法
由于公司的生产环境有很多台Linux的CentOS服务器, 为了方便机子(假设两台机子A,B)互相之间免密ssh, scp命令操作,配置如下 1. 在A.B上分别创建本机的公钥和私钥,输入命令后连续三 ...
- Es6的用法
var callBack=[]; // 这个等于是个闭包,i会累加到3在做运算,所以结果都是6 ;i<=;i++) { callBack[i]=function(){ ; } } console ...
- [LeetCode] 63. Unique Paths II_ Medium tag: Dynamic Programming
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- 24.C# Lambda表达式
1.Lambda表达式的含义 Lambda表达式是C#3.0引入的一种结构,使用它可以简化C#编程. 2.Lambda表达式与匿名方法 我们知道匿名方法可用于事件处理,如下delegate声明了一个匿 ...
- linux 笔记 第一天
打开终端:ctrl+alt+t 清屏:ctrl+l 在终端在退出锁定:ctrl+c 目录:又称为文件夹,是包含所有的文件 目录创建规则: 1.大小是256 2.不能包含特殊字符 3.见名知义 路径:是 ...
- RSA 汇总
最近工作中遇到了RSA,这个,以前只是粗略的看了一下,结果,实际使用的时候,各种眼花缭乱啊.现在整理一下RSA有哪些相关知识. 1. RSA算法本身.算法本身的内容实际上是在pkcs#1的标准里面说明 ...