简单轮播图2(左右)

HTML部分

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>轮播图3</title>
        <link rel="stylesheet" type="text/css" href="../css/reset.css" />
        <link rel="stylesheet" type="text/css" href="../css/轮播图3.css" />
        <script type="text/javascript" src="../js/basics.js"></script>
        <script type="text/javascript" src="../js/轮播图3.js"></script>
    </head>
    <body>
        <div id="box">
            <ul class="clear" id="list">
                <li>
                    <img src="../img/1504579720226.jpg" />
                </li>
                <li>
                    <img src="../img/1504579756992.jpg" />
                </li>
                <li>
                    <img src="../img/1504579814977.jpg" />
                </li>
                <li>
                    <img src="../img/1504579832741.jpg" />
                </li>
                <li>
                    <img src="../img/1504579877857.jpg" />
                </li>
            </ul>
            <div id="toPrev">&lt;</div>
            <div id="toNext">&gt;</div>
            <div id="sortNum">
                <ul>
                    <li class="active">1</li>
                    <li>2</li>
                    <li>3</li>
                    <li>4</li>
                    <li>5</li>
                </ul>
            </div>
        </div>

    </body>
</html>

CSS部分

#box{
    width: 600px;
    height: 400px;
    margin: 100px auto;
    border: solid 1px #2AABD2;
    position: relative;
    overflow: hidden;
}
#box ul{
    height: 500px;
    position: absolute;
    top: 0;
    left: 0;
}
#box #list li{
    float: left;
}
#box #list li img{
    height: 400px;
    width: 600px;
    display: block;
}

#toPrev{
    height: 100px;
    width: 50px;
    background: black;
    opacity:  0.3;
    filter: alpha(opacity = 30);
    position: absolute;
    left: 0;
    top: 50%;
    margin-top: -50px;
    color: #FFF;
    font-size: 40px;
    text-align: center;
    line-height: 100px;
    cursor: pointer;
}
#toNext{
    height: 100px;
    width: 50px;
    background: black;
    opacity:  0.3;
    filter: alpha(opacity = 30);
    position: absolute;
    right: 0;
    top: 50%;
    margin-top: -50px;
    color: #FFF;
    font-size: 40px;
    text-align: center;
    line-height: 100px;
    cursor: pointer;
}


#sortNum{
    position: absolute;
    right: -43px;
    bottom: 20px;
    width: 200px;
    height: 20px;
}
#sortNum ul li{
    float: left;
    height: 20px;
    width: 20px;
    background: black;
    opacity:  0.3;
    filter: alpha(opacity = 30);
    color: #FFFFFF;
    text-align: center;
    line-height: 20px;
    margin-right: 5px;
    cursor: default;
}

#sortNum ul .active{
    background: yellow;
    opacity:  1;
    filter: alpha(opacity = 100);
    color: black;
}

js部分

window.onload = function(){
    var box = $('box');
    var toPrevBtn = $('toPrev');
    var toNextBtn = $('toNext');
    var oUl = $('list');
    oUl.appendChild(oUl.children[0].cloneNode(true));

    var lis = oUl.getElementsByTagName('li');
    var liWidth = lis[0].offsetWidth;

    oUl.style.width = lis.length*liWidth + 'px';

    var sortNumDiv = $('sortNum');
    var nLis = sortNumDiv.getElementsByTagName('li');

    var i = 0;

    var timer = setInterval(function(){
        i++;
        move();
    },1000);

    function move(){
        if(i < 0){   //如果图片移动到第一张之前
            oUl.style.left = -liWidth*(lis.length-1)+'px';
            i = lis.length-2;
        }
        if(i == lis.length){  //如果图片移动到最后一张之后
            oUl.style.left = 0 + 'px';
            i = 1;
        }

        animate(oUl,'left',liWidth*-i);

        if(i == nLis.length){ 

            nLis[0].className = 'active';

            for(var j = 1;j < nLis.length;j++){
                nLis[j].className = '';
            }
        }else{
            for(var j = 0;j < nLis.length;j++){
                if(j != i){
                    nLis[j].className = '';
                }else{
                    nLis[j].className = 'active';
                }
            }
        }
    }
    toPrevBtn.onclick = function(){
        i--;
        move();
    };
    toNextBtn.onclick = function(){
        i++;
        move();
    };

    //鼠标放在数字键上
    for(var k = 0;k < nLis.length;k++){
        nLis[k].index = k;
        nLis[k].onmouseover = function(){
            i = this.index;
            move();
        };

    }
//  //鼠标放在数字键上二(不能让这样用因为排序和包含块的时间会子鼠标移除排序框时,多次触发,导致混乱)
//  for(var k = 0;k < nLis.length;k++){
//      nLis[k].index = k;
//      nLis[k].onmouseover = function(){
//          i = this.index;
//          move();
//          clearInterval(timer);
//      };
//      
//      nLis[k].onmouseout = function(){
//          
//          timer = setInterval(function(){
//              i++;
//              move();
//          },1000);
//      };
//  }
//  

    //鼠标放在盒子上停止运动,离开继续运动
    box.onmousemove = function(){
        clearInterval(timer);
    };
    box.onmouseout = function(){
        timer = setInterval(function(){
        i++;
        move();
        },1000);
    };
//  

};

效果
图片会轮播,点击序号框会滑到指定图片,点击向左向右可翻页

注意点:
1、克隆第一子节点,ul设置为相对定位,ul的宽度为所有li宽度之和
2、当图片被点击到第一张图片之前的位置,采用了非动画的方式直接将ul的left的值设置为-(图片的张数-1)*图片宽度,符号表示向右移动(既移动到最后一张图片的位置),然后将i的值设置为i-2既从倒数第二张图片

3、如果移动到最后一张图片之后则将ul的left值设为0,将i设置为1,既从第二张图片开始轮播
4、排序框的改变这里是通过设置元素的class名实现的
5、因为这里的向左和向右的div是设置在box上的,而在box上设置了鼠标移入就停止定时器,所以点击向左和向右时不需要再让定时器停止。如他们设置在box的外部,则需要设置停止定时器,并在离开时在开启
6、向左既将i的值减小,向右既将i的值增大,然后再继续执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值