jQuery实现图标特效(精灵图)

常见的特效,用到了CSS的精灵图,jQuery代码稍微复杂点,笔者会讲解重点。
PS:为啥笔者的图标缺三个?因为随手百度的精灵图只有五个图标,也懒得换,大家找个多一点的就行了。

效果图在这里插入图片描述

 <style>
        * {
            padding: 0;
            margin: 0;
        }

        ul {
            width: 400px;
            height: 300px;
            border: 1px solid #000;
            margin: 150px auto;
            list-style: none;
        }

        ul > li {
            float: left;
            width: 80px;
            line-height: 100px;
            padding-left: 20px;
            position: relative;
            overflow: hidden;
        }

        ul > li:nth-child(-n+4) {
            margin-top: 50px;
        }

        ul > li > span {
            display: inline-block;
            width: 30px;
            height: 30px;
            background: url("img/jlt/精灵图.png") no-repeat 0 0;
            border-radius: 50%;
            position: absolute;
            top: 5%;
        }
    </style>
    <body>
<ul>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
    <li><span></span>图标</li>
</ul>
</body>

ul > li:nth-child(-n+4) 这句话的意思是ul 的子元素li(不包括后代的li)中的前四个。

<script>
        $(function () {
            var lis = $('li');
            lis.each(function (index, ele) {
                var url = 'url("img/jlt/精灵图.png") no-repeat 0 ' + (index * -52) + 'px';
                $(this).children('span').css('background', url);
                console.log(url);
            })
            lis.mouseenter(function () {
                //animate无法修改颜色
                $(this).children('span').animate({
                    top: '-50%',
                }, 300, function () {
                    $(this).css('top', '50%');
                })
                $(this).children('span').animate({
                    top: '5%'
                }, 300, function () {
                    $(this).stop(true);
                })

            })
        });
    </script>

第一个each循环就是设置精灵图的位置,让他露出不同的图标,这也是精灵图的大概原理。剩余部分基本就是在讲animate()方法,笔者之前的文章有详细讲到。 jQuery中的animate()方法是无法更改颜色的。

如果有疑问,欢迎各位留言或者私信,觉得不错的就点个赞吧~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值