1.首先我们为什么要使用精灵图
我们首先看一下代码
<style>
.btn:link {
display: block;
width: 93px;
height: 29px;
background-image: url(./btn/link.png);
}
.btn:hover {
background-image: url(./btn/hover.png);
}
.btn:active {
background-image: url(./btn/active.png);
}
</style>
</head>
<body>
<a href="javascript::" class="btn"></a>
</body>
会发现一个问题 就是当按钮状态从link 切换到hover时 或 从hover却换到active时,第一次会出现闪烁的状态 这是因为上面原有导致得?
- 浏览器在加载页面时需要先加载当前页面,然后在加载页面中引入得外部资源而外部资源不是立刻加载得,外部资源是在需要得时候在会被加载,当我们从link切换到hover状态时,需要去加载hover得图片
- 而加载和显示直接存在一个时间差,这样在图片加载时会出现没有背景得情况 导致了闪烁。
解决办法
- 我们可以将多个按钮保存到一张图片中,这样我们一次性加载所以有得图片,然后通过偏移量来修改我们图片得位置即可,这就是精灵图得作用
优点
- 将多个图片保存到一个图片中,降低发送请求得次数,增加用户得访问速度
- 将多个图片保存到一个图片中,也会降低图片得总大小,增快加载速度
缺点
不能使用在img图片中只能使用在背景图片中
使用精灵图得步骤
- 创建一个元素,大小就是图标得大小
- 将精灵图设置为元素得背景
- 设置背景得偏移量,使其可以显示图标
<style>
.btn:link {
display: block;
width: 93px;
height: 29px;
background-image: url(./btn/btn.png);
}
.btn:hover {
background-position: -93px 0px;
}
.btn:active {
background-position: -186px 0px;
}
</style>
</head>
<body>
<a href="javascript::" class="btn"></a>
</body>