登录
原创

JavaScript-循环精灵图

发布于 2021-07-01 阅读 5080
  • 前端
  • JavaScript
  • CSS
  • HTML
原创

如果一个模块中,有多个相同的标签,都要使用精灵图,且所用到的小图在精灵图中是有规律整齐排放的,可以使用JavaScript来设置,从而简化css代码。

实现思路

  1. 先找到小图在精灵图中的排列规律,写出位置算法,
  2. 然后用for循环遍历标签,为标签设置背景图位置属性,用位置算法给属性赋值

精灵图示例

淘宝精灵图.png

小图的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>

页面效果:

image.png

评论区

零00
7粉丝

时光荏苒,我自清欢

0

0

0

举报