使用JQuery写轮播

版权声明:欢迎朋友们的观摩,标注原创的文章,如应用,请标明出处,谢谢。 https://blog.csdn.net/qq_37012770/article/details/79736283

使用JQuery写轮播

小白学习记录,望大神勿喷
这个轮播,是模拟的某宝款式做的,功能有:

  • 每隔一秒自动播放,无限循环
  • 指针放到图片上,会使轮播暂停
  • 轮播过程中,下方记录顺序的小圆点相继变红
  • 指针悬停在小红点上,对应跳转到相应图,鼠标离开后,轮播从当前页继续执行。
  • 左右翻页的按钮,点击之后会有翻页的效果

代码块

这是HTML部分的代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>轮播图</title>
    <link rel="stylesheet" type="text/css" href="lunbo.css"/>
    <script src="jquery/jquery-3.2.1.js" type="text/javascript" charset="utf-8"></script>
    <script src="lunbo.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="igs">
    <a class="ig" href="#"><img src="image/img1.jpg"/></a>
    <a class="ig" href="#"><img src="image/img2.jpg"/></a>
    <a class="ig" href="#"><img src="image/img3.jpg"/></a>
    <a class="ig" href="#"><img src="image/img4.jpg"/></a>
    <a class="ig" href="#"><img src="image/img5.jpg"/></a>

    <div class="btn btn1"><</div>
    <div class="btn btn2">></div>

    <ul id="tabs">
        <li class="tab">1</li>
        <li class="tab">2</li>
        <li class="tab">3</li>
        <li class="tab">4</li>
        <li class="tab">5</li>
    </ul>
</div>
</body>
</html>

这是CSS部分

* {
    margin: 0;
    padding: 0;
}

#igs {
    margin: 10px auto;
    width: 700px;
    height: 320px;
    position: relative;
}

.ig {
    position: absolute;
}

#tabs {
    position: absolute;
    list-style: none;
    background-color: rgba(255,255,255,.5);
    left: 45%;
    top: 125%;
    border-radius: 10px;
    padding: 5px 0 5px 5px;
}

.tab{
    float: left;
    text-align: center;
    line-height: 15px;
    width: 15px;
    height: 15px;
    cursor: pointer;
    overflow: hidden;
    margin-right: 4px;
    border-radius: 100%;
    background-color: rgb(200,100,150);
}

.btn{
    position: absolute;
    color: #fff;
    top: 50%;
    width: 40px;
    height: 100px;
    background-color: rgba(255,255,255,0.3);
    font-size: 40px;
    font-weight: bold;
    text-align: center;
    line-height: 100px;
    border-radius: 5px;
    margin: 0 5px;
}

.btn2{
    position: absolute;
    right: -25px;
    /*float: right;*/
    margin-right: 0;
}

.btn:hover{
    background-color: rgba(0,0,0,.7);
}

/*css中添加的代码:*/
.bg{ background-color: #f00; }

这是jq部分

//定义全局变量和定时器
var i = 0 ;
var timer;

$(document).ready(function(){
    //用jquery方法设置第一张图片显示,其余隐藏
    $('.ig').eq(0).show().siblings('.ig').hide();

    //调用showTime()函数(轮播函数)
    showTime();

    //当鼠标经过下面的数字时,触发两个事件(鼠标悬停和鼠标离开)
    $('.tab').hover(function(){
        //获取当前i的值,并显示,同时还要清除定时器
        i = $(this).index();
        Show();
        clearInterval(timer);
    },function(){
        //
        showTime();
    });

    //鼠标点击左侧的箭头
    $('.btn1').click(function(){
        clearInterval(timer);
        if(i == 0){
            i = 5;//注意此时i的值
        }
        i--;
        Show();
        showTime();
    });

    //鼠标点击右侧的箭头
    $('.btn2').click(function(){
        clearInterval(timer);
        if(i == 4){
            i = -1;//注意此时i的值
        }
        i++;
        Show();
        showTime();
    });


});


//创建一个showTime函数
function showTime(){
    //定时器
     timer = setInterval(function(){
        //调用一个Show()函数
        Show();
        i++;
        //当图片是最后一张的后面时,设置图片为第一张
        if(i==5){ i=0;}
    },1000);
}


//创建一个Show函数
function Show(){
    //在这里可以用其他jquery的动画
    $('.ig').eq(i).fadeIn(500).siblings('.ig').fadeOut(500);
    //给.tab创建一个新的Class为其添加一个新的样式,并且要在css代码中设置该样式
    $('.tab').eq(i).addClass('bg').siblings('.tab').removeClass('bg');

}

执行图:
这里写图片描述
截图卡在中间,模糊了

还有一种逼格高的轮播方式,是某大神博客,这里附上链接,供参考:
https://blog.csdn.net/zzxboy1/article/details/52008663

**搞了半天的效果,各种资料上看,终于是让小白写完了这个功能。
这里代码声明:并不是完全原创,站在巨人的肩膀上才进步的块嘛(模仿学习,如有和某大佬的代码相似,不甚荣幸)**。

猜你喜欢

转载自blog.csdn.net/qq_37012770/article/details/79736283