如果一个模块中,有多个相同的标签,都要使用精灵图,且所用到的小图在精灵图中是有规律整齐排放的,可以使用JavaScript来设置,从而简化css代码。
实现思路
- 先找到小图在精灵图中的排列规律,写出位置算法,
- 然后用for循环遍历标签,为标签设置背景图位置属性,用位置算法给属性赋值
精灵图示例
小图的x轴坐标都为0,y轴上第一个0,第二个44px,第三个88px、、、依次多44px,找到规律:每个的y轴坐标:索引 * 44px(索引从0开始),
注意使用精灵图是要将图片向上移,所以y轴坐标为负值
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>循环精灵图</title>
<style>
div {
width: 160px;
height: 155px;
margin: 100px auto;
}
ul {
width: 100%;
}
li {
float: left;
width: 30px;
height: 30px;
box-sizing: border-box;
margin: 5px;
list-style: none;
background-color: pink;
background: url(images/淘宝精灵图.png) 0 0 no-repeat;
}
</style>
</head>
<body>
<div>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
var list = document.querySelectorAll('li');
for (var i = 0; i < list.length; i++) {
var index = i * 44;
list[i].style.backgroundPosition = '0 -' + index + 'px';
}
</script>
</body>
</html>