项目遇到的响应式轮播图无缝衔接(jquery)

 

原作品地址

 

 


前言

根据原作品稍作改动


提示:以下是本篇文章正文内容,下面案例可供参考

一、html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>无缝切换轮播图</title>
    <link rel="stylesheet" href="./css/slide.css">
</head>
<body>

    <div class="slide">
        <!-- 导航点 -->
         <ul class="slide-nav">
            <li class="active"></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
         </ul>
         <!-- /导航点 -->
         <!-- 轮播图 -->
         <div class="slide-content">
            <div class="slide-item">
                <img src="./img/1.jpg" alt="图片一">
            </div>
            <div class="slide-item">
                <img src="./img/2.jpg" alt="图片二">
            </div>
            <div class="slide-item">
                <img src="./img/3.jpg" alt="图片三">
            </div>
            <div class="slide-item">
                <img src="./img/4.jpg" alt="图片四">
            </div>
            <div class="slide-item">
                <img src="./img/5.jpg" alt="图片五">
            </div>
         </div>
         <!-- /轮播图 -->
         <!-- 按钮 -->
         <a href="javascript:void(0);" class="slide-btn prev"></a>
         <a href="javascript:void(0);" class="slide-btn next"></a>
         <!-- /按钮 -->
    </div>

    <script type="text/javascript" src="//cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>
    <script type="text/javascript" src="./js/slide.js"></script>
    <script type="text/javascript">
        $(function(){
            $('.slide').slide();
        });
    </script>
</body>
</html>

二、使用步骤
 

*{margin: 0;padding: 0;}
li{list-style-type: none;}
.slide{
    width: 640px;
    height: 400px;
    margin: 100px auto 0 auto;
    border: 5px solid #CCC;
    position: relative;
    overflow: hidden;
}
/* 导航点 */
.slide .slide-nav{
    position: absolute;
    z-index: 2;
    bottom: 10px;
    right: 10px;
}
.slide .slide-nav>li{
    width: 10px;
    height: 10px;
    border: 2px solid #CCC;
    border-radius: 50%;
    float: left;
    margin-left: 5px;
    cursor: pointer;
}
.slide .slide-nav>li.active{
    background-color: #FFF;
    border-color: #FFF;
}
/* #导航点 */
/* 轮播内容 */
.slide .slide-content{
    position: relative;
    z-index: 1;
    top: 0;
    width: 99999px;
    height: 400px;
}
.slide .slide-content .slide-item{
    float: left;
    width: 640px;
    height: 400px;
}
.slide .slide-content .slide-item>img{
    width: 100%;
    height: 100%;
}
/* #轮播内容 */
/* 按钮 */
.slide .slide-btn{
    display: block;
    width: 50px;
    height: 100px;
    position: absolute;
    z-index: 2;
}
.slide .prev{
    top: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    background:url(../img/pre.png) no-repeat center center;
}
.slide .next{
    top: 0;
    bottom: 0;
    right: 0;
    margin: auto;
    background:url(../img/next.png) no-repeat center center;
}
.slide a:hover{
    background-color: rgba(0,0,0,0.5);
}
/* #按钮 */

三、jq

$(function () {

        //自动刷新页面让轮播图,图片等数据重新加载,响应式布局



        $(window).resize(function () {

          location.reload(); //兼容chrome safari

          window.location.href = ""; //兼容火狐 //刷新后执行的代码 ↓

        });

      });



      $(function () {

        $(".slide").slide();

      });

      $.fn.slide = function () {

        var slideEle = $(this);



        var slideContent = slideEle.find(".slide-content");

        var slideNavLi = slideEle.find(".slide-nav li");



        var timer = null; //定时器

        var time = 2000; //轮播图切换事件(毫秒)

        var index = 0; //当前索引值

        var oldLength = slideEle.find(".slide-item").length; //item初始长度

        var length = oldLength * 2; //item复制后的长度

        var slideWidth;//显示窗口宽度

        // 我要得效果是大屏520*520,屏幕小于520以下设置为360*360

        var lbtWidth = $(window).width();

        if (lbtWidth > 520) {

          slideWidth = 520; 

        } else if (lbtWidth <= 520) {

          slideWidth = 320;

          // 下面的操作主要是因为媒体查询权重不够的原因导致不能重新设置宽高,这里我直接上大招用jq设置

          $(".slide").css("width", "320px");

          $(".slide").css("height", "320px");

          $(".slide-content").css("height", "320px");

          $(".slide-item").css("width", "320px");

          $(".slide-item").css("height", "320px");

          $(".slide-item>img").css("width", "320px");

          $(".slide-item>img").css("height", "320px");

        }



        init();



        //初始化

        function init() {

          //将item复制一份加入到原item的后面,形成:原1、原2、原3、原4、...原末、复1、复2、复3、复4...复末,并定位到复1项

          index = oldLength;

          slideContent.append(slideContent.html()).css({

            width: slideWidth * length,

            left: -slideWidth * index,

          });



          //鼠标悬浮事件

          slideEle.hover(

            function () {

              //移除定时任务

              clearInterval(timer);

            },

            function () {

              //添加定时任务

              setTimer();

            }

          );



          //按钮点击事件

          slideEle

            .find(".prev")

            .click(function () {

              if (!slideContent.is(":animated")) {

                index--;

                change();

              }

            })

            .end()

            .find(".next")

            .click(function () {

              if (!slideContent.is(":animated")) {

                index++;

                change();

              }

            });



          //导航点点击事件委托

          slideNavLi.click(function (event) {

            index = $(event.target).index() + oldLength;

            change();

          });



          setTimer();

        }

        //设置定时器

        function setTimer() {

          timer = setInterval(function () {

            index++;

            change();

          }, time);

        }



        function change() {

          changeSlide();

          changeNav();

        }



        //轮播图切换

        function changeSlide() {

          /*      if(slideContent.is(':animated')){

            return;

        }*/

          slideContent.animate({ left: -slideWidth * index }, 500, function () {

            //原1、原2、原3、原4、...原末、复1、复2、复3、复4...复末

            if (index <= 0) {

              //当定位到原1时,在回调函数中将slideContent瞬间定位到复1

              index = oldLength;

              slideContent.css({ left: -slideWidth * index });

            }

            if (index >= length - 1) {

              //当定位到复末时,在回调中将slideContent瞬间定位到原末

              index = oldLength - 1;

              slideContent.css({ left: -slideWidth * index });

            }

          });

        }

        //导航点切换

        function changeNav() {

          slideNavLi

            .removeClass("active")

            .eq(index % oldLength)

            .addClass("active");

        }

      };

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值