zoukankan      html  css  js  c++  java
  • 2015.7.11js-10(无缝滚动)

    1.实现原理:setInterval定时器,让某元素position的left属性定时滚动,使用到js中的元素的offsetLeft属性。

    2.案例:1.css的实现是外div是4张图片的总宽度,设置relative然后overflow隐藏。子代有ul层设置为absolute;left属性移动时都是移动整个ul层的。;

               2.4张图片无缝滚动,再复制4张(1,2,3,4)在第4张后面,li下有4张图片,获取li的offsetWidth(),然后算出ul的总宽度,当包着4张图片的ul层的offsetLeft滚动到一半的时候,将前4张的left变成0,这样滚动的时候就会无缝滚动了。设置ul层的offsetLeft来控制滚动。

         3.demo地址:http://www.alanjs.comeze.com/study/demo11setInterval.html

    <script type="text/javascript">
    window.onload = function(){
        var slide = document.getElementById("slideImg");
        var moveUl = document.getElementById("moveUl");
        var aLi = slide.getElementsByTagName("li");
        var timer = null;
        var speed = -2;
        var prev = document.getElementById("prev");
        var next = document.getElementById("next");
    
        moveUl.innerHTML = moveUl.innerHTML + moveUl.innerHTML;                //先复制4张图片放在后面
    
        moveUl.style.width = aLi[0].offsetWidth*aLi.length + "px";            //获取一个li的宽度来设置ul层的总宽度 
        timer = setInterval(move,30)
    
        slide.onmouseover = function(){
            if(timer){
                clearInterval(timer);
            }
        }
    
        slide.onmouseout = function(){
            timer = setInterval(move,30);
        }
    
        prev.onclick = function(){
            speed = -2;
        }
    
        next .onclick = function(){
            speed = 2;
        }
    
        function move(){
            if(moveUl.offsetLeft < -moveUl.offsetWidth/2){                    //向左滚动,当滚动到一半的时候,前面4张就跳到后面
                moveUl.style.left = "0";
            }
            if(moveUl.offsetLeft > 0){
                moveUl.style.left = -moveUl.offsetWidth/2 + "px";        //向右滚动,当一开始滚动的时候,ul的left属性大于0,后面4张就立即跳到前面
          } 
         moveUl.style.left
    = moveUl.offsetLeft+speed + "px"; //设置ul层的offsetLeft来控制滚动
      }
    }
    </script>
    <style>
    #wrap{width:1603px;margin:0 auto;height:300px;}
    #sliderImg{width:1308px;height:203px;position:relative;overflow:hidden;border:1px solid red;}
    #sliderImg ul{positin:absolute;left:0px;top:0px;}
    #sliderImg ul li{list-style:none;float:left}
    </style>
    
    <body>
        <div id="wrap">
            <div id="sliderImg">
                <ul id="moveUl">
                        <li><a href="javascript:;"><img src="images/slide5.jpg" /></a></li>
                        <li><a href="javascript:;"><img src="images/slide6.jpg" /></a></li>
                        <li><a href="javascript:;"><img src="images/slide7.jpg" /></a></li>
                        <li><a href="javascript:;"><img src="images/slide8.jpg" /></a></li>
                </ul>
            </div>
            <a id="prev" href="javascript:;">prev</a>
            <a id="next" href="javascript:;">next</a>
        </div>
    </body>
  • 相关阅读:
    Rust交叉编译Mac编译Linux/Windows平台
    SpringBoot 如何生成接口文档
    Echarts + Python 实现的动态实时大屏范例
    计算机中的0.1+0.2=0.3吗?(无可避免的浮点误差)
    Odin线刷失败的常见错误原因分析及解决方法(转载)
    Odin3 刷机工具刷机教程, BL、AP、CP 与 CSC 是什么意思(转载)
    各种常见USB接口类型
    三星S8+手机,刷机经验
    小米8手机,MIUI由12.5降级到9.5、安卓由10降到8;先ROOT,再安装Magisk、Xposed的步骤
    手机刷机相关,若干名词
  • 原文地址:https://www.cnblogs.com/alantao/p/4639151.html
Copyright © 2011-2022 走看看