jQuery实现轮播图(效果同 bilibili)

jQuery 实现轮播图

图片滚动(效果同 bilibili)

  • 使用左浮动将所有图片拼接成一横条

  • 通过整体滑动实现图片的切换效果

  • 使用 overflow: hidden 将非当前显示图片隐藏

  • 封装图片切换方法

                var leftX = 0;
                function changePic(el){
                    el.addClass("on");
                    el.siblings().removeClass("on");
                    leftX = (-el.index())*400;
                    $(".pic").animate({
                        left: leftX
                    }, 500);
                    $("#pic_title").text(imgTitleList[el.index()]);
                }
    
  • 自动循环播放图片

                var timer;
                function autoPlay(el){
                    timer = setInterval(function(){
                        if(el.index()>=4){
                            el = $(".trig>span").eq(0);
                        }else{
                            el = $(".trig>span").eq(el.index()+1);
                        }
                        changePic(el);
                    }, 3000);
                }
                autoPlay($(".trig>span").eq(0));
    
  • 添加鼠标点击切换事件

                $(".trig>span").click(function(){
                    changePic($(this));
                    clearInterval(timer);
                    autoPlay($(this));
                });
    

完整源码

1、html 部分
		<div class="course_panel">
            <ul class="pic">
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
            </ul>
            <span id="pic_title">Web应用开发</span>
            <ul class="trig">
                <span class="on"></span>
                <span></span>
                <span></span>
                <span></span>
                <span></span>
            </ul>
        </div>
2、CSS 部分
.course_panel{
    position: relative;
    margin: 30px auto;
    width: 400px;
    height: 220px;
    overflow: hidden;
}
.pic{
    position: relative;
    width: 2000px;
    height: 220px;
}
.pic>li{
    list-style: none;
    width: 400px;
    height: 220px;
    float: left;
}
.pic>li>a>img{
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 5px;
}
#pic_title{
    position: absolute;
    width: 100%;
    height: 30px;
    bottom: 0;
    background: -webkit-linear-gradient(transparent,rgba(0,0,0,.3));
    color: #fff;
    cursor: pointer;
    text-indent: 1em;
}
.course_panel .trig{
    position: absolute;
    right: 15px;
    bottom: 4px;
    cursor: default;
}
.course_panel .trig span{
    display: inline-block;
    margin-left: 8px;
    cursor: pointer;
    width: 18px;
    height: 18px;
    background-image: url("../img/icons.png");
    background-position: -855px -790px;
    background-color: transparent;
    transition: none;
}
.course_panel .trig span:hover{
    background-position: -919px -790px;
}
.course_panel .trig span.on{
    background-position: -855px -727px;
    width: 18px;
    height: 18px;
}
3、Javascript 部分
       //    1、图片源
            var imgListUrl = ['1.png', '2.jpeg', '3.jpeg', '4.jpeg', '5.jpg'];
            var imgTitleList = ['Web程序设计', '移动开发', '大学物理', '计算机图形学', 'Python程序设计'];
            var imgList = $(".pic>li>a>img");
            for(let i = 0; i<5; i++){
                imgList.eq(i).attr("src","./img/"+imgListUrl[i]);
            }
            //  2、点击切换图片
            $(".trig>span").click(function(){
                changePic($(this));
                clearInterval(timer);
                autoPlay($(this));
            });
            var leftX = 0;
            function changePic(el){
                el.addClass("on");
                el.siblings().removeClass("on");
                leftX = (-el.index())*400;
                $(".pic").animate({
                    left: leftX
                }, 500);
                $("#pic_title").text(imgTitleList[el.index()]);
            }
        //    3、自动循环图片
            var timer;
            function autoPlay(el){
                timer = setInterval(function(){
                    if(el.index()>=4){
                        el = $(".trig>span").eq(0);
                    }else{
                        el = $(".trig>span").eq(el.index()+1);
                    }
                    changePic(el);
                }, 3000);
            }
            autoPlay($(".trig>span").eq(0));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值