轮播图

作者: JS_swh | 来源:发表于2017-04-10 17:32 被阅读0次
<!DOCTYPE html>
        <html>
            <head>
                <meta charset="UTF-8">
                <title></title>
                <style type="text/css">
            * {margin: 0; padding: 0;}
            .box {width: 490px; height: 170px; padding: 5px; border: 1px solid #ccc; margin: 200px auto;}
            #inner {width: 490px; height: 170px; overflow: hidden;  position: relative;}
        ul {list-style: none; width: 600%; position: absolute; left: 0;}
        li {float: left;}
        
        .square {position: absolute; bottom: 10px; right: 10px;}
        .square span {display: inline-block; width: 16px; height: 16px; margin: 3px; background-color: #fff; text-align: center; border: 1px solid #ccc; line-height: 16px; cursor: pointer;}
        .square .current {background-color: darkorange; color: #fff;}
        
        .arrow {display: none;}
        .arrow span {position: absolute; top: 50%; margin-top: -23px; width: 20px; height: 46px; background-color: rgba(0,0,0,0.3); color: #FFFFFF; text-align: center; font: 400 15px/46px "consolas";}
        .arrow span:hover {background-color: rgba(0,0,0,0.6);}
        .arrow .arrow-left {left: 0; border-radius: 0 5px 5px 0;}
        .arrow .arrow-right {right: 0; border-radius: 5px 0 0 5px;}
    </style>
    <script type="text/javascript">
        window.onload = function () {
            
            var inner = document.getElementById("inner");
            var box = inner.parentNode;
            var imgWidth = inner.offsetWidth;
            var ul = inner.firstElementChild || inner.firstChild;
            var square = inner.children[1];
            var arrow = inner.children[2];
            var spanArr = arrow.children;
            var speed = 15;
            
            for(var i=0; i<ul.children.length; i++){
                var newSpan = document.createElement("span");
                if(i==0){
                    newSpan.className = "current";
                }
                newSpan.innerHTML = i+1;
                square.appendChild(newSpan);
            }
            var newLi = ul.children[0].cloneNode(true);
            ul.appendChild(newLi);
            
            var squareArr = square.children;
            for(var i=0; i<square.children.length; i++){
                squareArr[i].index = i;
                squareArr[i].onmouseover = function(){
                    for(var j=0; j<squareArr.length; j++){
                        squareArr[j].className = "";
                    }
                    this.className = "current";
                    imgIndex = squareIndex = this.index;
                    animater(ul,-this.index*imgWidth,speed);
                }
            }
            
            
            var timer = null;
            var imgIndex = 0;
            var squareIndex = 0;
            timer = setInterval(autoPlay,1000);
            
            function autoPlay() {
                
                imgIndex++;
                if(imgIndex>squareArr.length){
                    ul.style.left = 0;
                    imgIndex = 1;
                }
                animater(ul,-imgIndex*imgWidth,speed);
                
                squareIndex++;
                if(squareIndex>squareArr.length-1){
                    squareIndex = 0
                }
                for(var j=0; j<squareArr.length; j++){
                    squareArr[j].className = "";
                }
                squareArr[squareIndex].className = "current";
                
            }
            
            
            box.onmouseover = function () {
                clearInterval(timer);
                arrow.style.display = "block";
            }
            box.onmouseout = function () {
                timer = setInterval(autoPlay,1000);
                arrow.style.display = "none";
            }
            
            spanArr[0].onclick = function () {
                imgIndex--;
                if(imgIndex>squareArr.length){
                    ul.style.left = 0;
                    imgIndex = 1;
                }else if(imgIndex<0){
                    ul.style.left = -(ul.children.length-1)*imgWidth+"px";
                    imgIndex = ul.children.length-2;
                }
                animater(ul,-imgIndex*imgWidth,speed);
                
                squareIndex--;
                if(squareIndex>squareArr.length-1){
                    squareIndex = 0
                }else if(squareIndex<0){
                    squareIndex = squareArr.length-1;
                }
                for(var j=0; j<squareArr.length; j++){
                    squareArr[j].className = "";
                }
                squareArr[squareIndex].className = "current";
            }
            spanArr[1].onclick = function () {
                autoPlay();
            }
            
        }
        
        function animater (ele,target,speed) {
            clearInterval(ele.timer);
            speed = target>ele.offsetLeft ? speed : -speed;
            ele.timer = setInterval(function(){
                var val = ele.offsetLeft - target;
                ele.style.left = ele.offsetLeft + speed + "px"; 
                if(Math.abs(val) <= Math.abs(speed)){
                    ele.style.left = target + "px";
                    clearInterval(ele.timer);
                }
            },10);
        }
        
        
        
    </script>
</head>
<body>
    <div class="box">
        <div id="inner">
            <ul>
                <li>![](img/01.jpg)</li>
                <li>![](img/02.jpg)</li>
                <li>![](img/03.jpg)</li>
                <li>![](img/04.jpg)</li>
                <li>![](img/05.jpg)</li>
            </ul>
            <div class="square">
            </div>
            <div class="arrow">
                <span class="arrow-left"><</span>
                <span class="arrow-right">></span>
            </div>
        </div>
    </div>
    
</body>
</html>

相关文章

  • 无标题文章

    轮播图分为:传统轮播图、间歇轮播图、呼吸轮播图、无缝滚动轮播图等。它们各具特色,各有用处。 1.传统轮播图 第一步...

  • 轮播图

    轮播图分为:传统轮播图、间歇轮播图、呼吸轮播图、无缝滚动轮播图等。 1.传统轮播图 第一步,得到元素 第二步,设置...

  • 现金红包

    每日红包 轮播图 详情图 周末红包 轮播图 详情图 圣诞红包 轮播图 详情图

  • day7_作业

    轮播图1 轮播图2

  • [iOS]定制性强的广告轮播图--SCAdView

    @[无限轮播图] @[3D轮播图] @[广告轮播图] SCAdView Statement If my code ...

  • 普通奖品

    卡西欧小方块 轮播图 详情图 三只松鼠大礼包 轮播图 详情图 天猫精灵 轮播图 详情图 小米蓝牙无线耳机 轮播图 ...

  • 轮播图心得

    轮播图 写轮播图之前我们要认识到几个问题:一、什么是轮播图?二、怎么实现轮播效果?三、轮播图还有什么小功能可以实现...

  • 第五周学习内容

    焦点图轮播特效之原理、焦点图轮播样式之布局、焦点图轮播之箭头切换、焦点图轮播之无限滚动。 js简介、用法、输出。

  • 三种样式的轮播图

    一、100%比例轮播图 HTML代码 CSS样式 js代码 二、手动箭头轮播图 三、简易轮播图

  • 多轮播图的设计

    列表展示多个轮播图 多个轮播图同时显示 多个轮播图不定时进行轮播动画 对应呈现的关系:1个TableView、一个...

网友评论

      本文标题:轮播图

      本文链接:https://www.haomeiwen.com/subject/raxeattx.html