美文网首页
jq实现碎片轮播

jq实现碎片轮播

作者: 前端毛毛 | 来源:发表于2018-10-24 11:35 被阅读0次
效果如下: 碎片轮播.gif

实现原理:将背景图片分成100等分 实现宽高从0到他们本身的宽高的动画

html

<div id="banner">
    <div id="pic">
        <ul>
            <li class="active"><a href="#"><img src="images/b1.jpg"></a></li>
            <li><a href="#"><img src="images/b2.jpg"></a></li>
            <li><a href="#"><img src="images/b3.jpg"></a></li>
            <li><a href="#"><img src="images/b4.jpg"></a></li>
            <li><a href="#"><img src="images/b5.jpg"></a></li>
        </ul>

    </div>
    <div id="tab">
        <ul>
            <li class="on"></li><li></li><li></li><li></li><li></li>
        </ul>
    </div>
    <div id="btn">
        <div id="leftBtn">&lt;</div>
        <div id="rightBtn">&gt;</div>
    </div>
</div>

css3

body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre,
        form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0;border:none; list-style:none;}
        #banner{ width:520px; height:280px; margin:40px auto; position:relative;/* overflow: hidden*/}
        #pic ul{
            width: 520px; height:280px;position: absolute;left: 0;top: 0;}
        #pic ul li {
            position: absolute;
            top: 0;
            left: 0;
            display: none;
        }
        #pic ul li.active{
            display: block;
           }
        #tab{ width:76px; height:11px; background:rgba(255,255,255,0.3); position:absolute;left:50%;bottom:10px;margin-left:-38px; border-radius:30px;z-index: 11;}
        #tab li{ cursor:pointer; width:10px; height:10px; border-radius:100%; background:#fff; float:left; margin:1px 2px;}
        #tab li.on{ background-color:red;}
        #btn{ display:block;}
        #leftBtn,#rightBtn{ position:absolute; top:50%; margin-top:-10px; color:#fff; width:20px; height:32px; background:rgba(0,0,0,0.3) ; text-align:center;line-height:32px; font-size:20px; cursor:pointer; z-index:11;}
        #leftBtn{ left:5px;  border-bottom-right-radius:50%;}
        #rightBtn{ right:5px;border-top-left-radius:50%;}
        #btn .hover{ background-color:#333;}


js代码(重要)

$(function () {
        //初始化
        var $maoni = $("<div class='maoni'></div>").appendTo("#banner");
        var arr = [];
        var lock=true;
        var num = 0;
        var $lis = $("#pic ul li");
        for (var i = 0; i < 10; i++) {
            for (var j = 0; j < 10; j++) {
                arr.push($("<div></div>").css({
                    width: 0,
                    height: 0,
                    "background": "url(images/b1.jpg) no-repeat " + j * -54 + "px " + i * -28 + "px",
                    "position": "absolute",
                    "top": i * 28 + "px",
                    "left": j * 54 + "px"
                }).appendTo($maoni));
            }
        }
        var timer=null;
        //做按钮
        $("#btn #leftBtn").click(function () {
            if(!lock) return;
            lock=false;
            num--;
            if (num < 0) {
                num = 4;
            }
            $("#tab li").eq(num).addClass("on").siblings().removeClass();
            for (var i = 0; i < arr.length; i++) {
                arr[i].css({"background-image": "url(images/b" + (num + 1) + ".jpg)"});
                arr[i].delay(Math.random() * 100).animate({
                    width: 54,
                    height: 28,
                }, 800 + Math.random() * 1000)
            }
            //保证回调函数只有一次
            setTimeout(function () {
                //更换图片
                //排他模型
                $lis.each(function () {
                    $(this).removeClass("active");
                })
                $lis.eq(num).addClass("active");
                //让所有的猫腻碎片 归位
                for (var i = 0; i < arr.length; i++) {
                    arr[i].css({width: 0, height: 0})
                }
                lock=true;
            }, 2000)
        })

        //有按钮
        $("#btn #rightBtn").click(function () {
            if(!lock) return;
            lock=false;
            $("#tab li").eq(num).addClass("on").siblings().removeClass();
            move();
        })

        //自动轮播
        timer=setInterval(move,3000);
        function move() {
                num++;
                if (num >4) {
                    num = 0;
                }
                $("#tab li").eq(num).addClass("on").siblings().removeClass();
                for (var i = 0; i < arr.length; i++) {
                    arr[i].css({"background-image": "url(images/b" + (num + 1) + ".jpg)"});
                    arr[i].delay(Math.random() * 100).animate({
                        width: 54,
                        height: 28,
                    }, 800 + Math.random() * 1000)
                }
                //保证回调函数只有一次
                setTimeout(function () {
                    //更换图片
                    //排他模型
                    $lis.each(function () {
                        $(this).removeClass("active");
                    })
                    $lis.eq(num).addClass("active");
                    //让所有的猫腻碎片 归位
                    for (var i = 0; i < arr.length; i++) {
                        arr[i].css({width: 0, height: 0})
                    }
                    lock=true;
                }, 2000)
            }
        //手动
        $("#tab li").mouseover(function () {
            $(this).addClass("on").siblings().removeClass("on");
           move();
        })
        $("#banner").hover(function () {
            clearInterval(timer);
        },function () {
            timer=setInterval(move,3000);
        })
    })

总结:主要考察对背景图片定位以及对jq基础知识的掌握

相关文章

  • jq实现碎片轮播

    实现原理:将背景图片分成100等分 实现宽高从0到他们本身的宽高的动画 html css3 js代码(重要) 总结...

  • jq实现图片轮播

    涉及知识点:父元素与子元素的positionrgba()的4个参数可以设置颜色和透明度transform:rota...

  • angular下实现轮播图

    angular下实现轮播图不需要像jq那样操作dom,本人将轮播图封装成了一个组件,实现的效果图如下 代码如下 1...

  • 02-13jq补充

    一:jq补充 二:图片轮播

  • JQ实现左右轮播效果

    这篇文章主要是实现图片左右轮播效果,功能:进入页面自动播放图片,鼠标悬浮,暂停图片轮播,鼠标离开,继续图片轮播,点...

  • jq轮播

    题目1: 轮播的实现原理是怎样的?如果让你来实现,你会抽象出哪些函数(or接口)供使用?(比如 play()) 轮...

  • JQ轮播

    题目1: 轮播的实现原理是怎样的?如果让你来实现,你会抽象出哪些函数(or接口)供使用?(比如 play()) 例...

  • 网页轮播图

    JQ轮播图代码: 此代码包含了CSS样式,JQ函数。可以直接使用在网页中。在使用中只需修改图片地址即可。JS-轮播...

  • jq无缝轮播图

    html+css部分 jq部分

  • JQ写轮播图

    无滑动效果 1、让图片按顺序显现,隐藏 2、让图片根据鼠标移动到原点的位置显现隐藏 有滑动效果 html和css部...

网友评论

      本文标题:jq实现碎片轮播

      本文链接:https://www.haomeiwen.com/subject/fupttqtx.html