图片简单匀速滚动

<style type="text/css">
*{ padding:0; margin:0; list-style:none; border:0;}
.all{
  width:500px;
  height:200px;
  padding:7px;
  border:1px solid #ccc;
  margin:100px auto;
  position:relative;
}
.screen{
   width:500px;
   height:200px;
    overflow:hidden; 
   position:relative;
}

.screen li{ width:500px; height:200px; overflow:hidden; float:left;}
.screen ul{ position:absolute; left:0; top:0px; width:3000px;}
.all ol{ position:absolute; right:10px; bottom:10px; line-height:20px; text-align:center;}
.all ol li{ float:left; width:20px; height:20px; background:#fff; border:1px solid #ccc; margin-left:10px; cursor:pointer;}
.all ol li.current{ background:yellow;}

</style>

<body>
<div class="all" id='all'>
   <div class="screen">
        <ul id="ul">
            <li><img src="images/taobao/1.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/2.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/3.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/4.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/5.jpg" width="500" height="200" /></li>
        </ul>
    </div>
</div>
</body>

<script type="text/javascript">
//   匀速滚动函数封装
    function animate(obj,target) {
        clearInterval(obj.timer);
        var speed = obj.offsetLeft>target?-15:15;
        obj.timer = setInterval(function () {
            if (Math.abs(obj.offsetLeft-target)>=15){
                obj.style.left = obj.offsetLeft+speed+"px";
            }
            else{
                clearInterval(obj.timer);
                obj.style.left = target +"px";
            }

        },10)
    }

    window.onload = function () {
        var all = document.getElementById("all");
        var ul = document.getElementById("ul");
        var ullis = ul.children;
        //1.克隆第一张图片放到ul最后面,做无缝滚动
        ul.appendChild(ul.children[0].cloneNode(true));

        //2.自动生成小方块
        var ol = document.createElement("ol");
        all.appendChild(ol);
        for(var i=0; i<ullis.length-1; i++){
            var li = document.createElement("li");
            li.innerHTML = i+1;
            ol.appendChild(li);
        }
        ol.children[0].className = "current";

        //3.鼠标经过小方块动态效果实现
        var ollis = ol.children;
        for(var i=0; i<ollis.length; i++){
            ollis[i].index = i;
            ollis[i].onmouseover = function () {
                for(var k=0; k<ollis.length; k++){
                    ollis[k].className = "";          //清空小方块格式
                }
                this.className = "current";
                animate(ul,-this.index*500);
                j = m = this.index;
            }
        }

        //4.图片自动滚播,分两步
        var timer = null;
        var j = 0;
        var m = 0;
        timer = setInterval(autoplay,1000);

        function autoplay() {
            //第一步:图片自动播放
            j++;
            if(j>ullis.length-1){
                j = 1;
                ul.style.left = 0;
            }
            animate(ul,-j*500);
            //第二步:小方块自动播放
            m++;
            if(m>ollis.length-1){
                m = 0;
            }
            for(var i=0;i<ollis.length;i++){
                ollis[i].className = "";
            }
            ollis[m].className = "current";
        }

        all.onmouseover = function () {
            clearInterval(timer);
        };

        all.onmouseout = function () {
            timer = setInterval(autoplay,1000);
        };
    }
</script>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值