jQuery(二)图片轮播与放大显示

效果图如下

思路分析

1.图片轮播,将第一个图片向左移动80px(一个图片的宽度),完成动画以后的回调函数,改变图片的marginLeft值,追加到最后一张图片后,使用计时器依次循环播放图片。

 //图片轮播
            $(".menulist li").first().animate({
                marginLeft: -80  //左移一个图片
            }, 600, function () {  //动画完成后执行的函数
                $(this).css({
                    marginLeft: 5,
                    marginRight: 5
                });
                $(this).appendTo($(this).parent());
            });

2.计时器和滑动图片轮播一样,使用window.requestAnimationFrame()

3.突出显示,复制要显示的图片,图片效果淡入淡出,改变透明度,设置图片的样式

  $(".ceng").find("img").fadeOut(300, function () {
                $(".ceng").html("");
                $(".menulist li").eq(4).children("img").clone().css({
                    width: 100,
                    height: 100,
                    opacity: 0
                }).appendTo($(".ceng")).fadeTo(300, 1);
            });

4.放大图片显示与突出显示效果一样 

全部代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .block {
            position: relative;
            width: 400px;
            height: 500px;
            border: 1px solid silver;
            margin: 0 auto;
            /*overflow: hidden;*/
        }

        .smallimage {
            position: absolute;
            bottom: 10px;
            width: 400px;
            height: 80px;
        }

        .smallimage ul {
            width: 630px;
            height: 80px;
            margin-left: -115px;
            border: 1px solid silver;
        }

        .smallimage li {
            float: left;
            list-style: none;
            width: 80px;
            height: 80px;
            box-shadow: 0 0 4px black;
            margin: 0 5px;
        }

        .smallimage img {
            width: 80px;
            height: 80px;
        }

        .ceng {
            position: absolute;
            bottom: -10px;
            left: 150px;
            width: 100px;
            height: 100px;
            box-shadow: 0 0 10px black;
        }

        .ceng > img {
            width: 100%;
            height: 100%;
        }

        .big {
            position: relative;
            top: 0;
            z-index: -1;
            width: 400px;
            height: 400px;
        }

        .big img {
            width: 400px;
            height: 400px;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="big">
        <img src="./imagelist/u=3164647831,181715073&fm=26&gp=0.jpg" alt=""/>
    </div>
    <div class="smallimage">

        <div class="ceng">
            <img src="./imagelist/u=3164647831,181715073&fm=26&gp=0.jpg" alt=""/>
        </div>
        <ul class="menulist">
            <li><img src="./imagelist/u=1058809690,3023062520&fm=26&gp=0.jpg" alt=""/></li>
            <li><img src="./imagelist/u=2522222810,3587513282&fm=26&gp=0.jpg" alt=""/></li>
            <li><img src="./imagelist/u=2928408181,1036252221&fm=26&gp=0.jpg" alt=""/></li>
            <li><img src="./imagelist/u=3164647831,181715073&fm=26&gp=0.jpg" alt=""/></li>
            <li><img src="./imagelist/u=3605060486,3887107607&fm=26&gp=0.jpg" alt=""/></li>
            <li><img src="./imagelist/u=3743442356,4212005056&fm=26&gp=0.jpg" alt=""/></li>
            <li><img src="./imagelist/u=1500120011,2779240891&fm=26&gp=0.jpg" alt=""/></li>
        </ul>
    </div>
</div>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    var time = new Date();
    var oldTime = time.getTime();
    var newTime = null;
    loop();
    function loop() {
        window.requestAnimationFrame(loop);
        //用本地时间计算2秒
        var newtimes = new Date().getTime();
        newTime = newtimes;
        if (newTime - oldTime >= 2000) { //2s动一次
            oldTime = newTime;
            $(".big").find("img").fadeOut(300, function () {
                $(".big").html("");
                $(".menulist li").eq(4).children("img").clone().css({
                    width: 400,
                    height: 400,
                    opacity: 0
                }).appendTo($(".big")).fadeTo(300, 1);   //fadeTo() 方法将被选元素的不透明度逐渐地改变为指定的值。
            })
            $(".ceng").find("img").fadeOut(300, function () {
                $(".ceng").html("");
                $(".menulist li").eq(4).children("img").clone().css({
                    width: 100,
                    height: 100,
                    opacity: 0
                }).appendTo($(".ceng")).fadeTo(300, 1);
            });
          //图片轮播
            $(".menulist li").first().animate({
                marginLeft: -80  //左移一个图片
            }, 600, function () {  //动画完成后执行的函数
                $(this).css({
                    marginLeft: 5,
                    marginRight: 5
                });
                $(this).appendTo($(this).parent());
            });
        }

    }
</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值