JS小练习之实现无缝滚动

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>定时器</title>
    <style>
    /* #div1{
      width: 200px;height: 200px;background: red;position:absolute;
      left:200px;top:150px;margin: 50px;
    } */

    * {
      margin: 0;
      padding: 0;
    }
    #wrapper{
      width:712px;
      height:108px;
      margin: 100px auto;
      /* position: relative :位置被设置为 relative 的元素,可将其移至相对于其正常位置的地方,
      因此 "left:20" 会将元素移至元素正常位置左边 20 个像素的位置*/
      position: relative;
      background: red;
      /* overflow 属性规定当内容溢出元素框时发生的事情 ,
      visible属性,默认值,内容不会被修剪,会呈现在元素框之外;
      hidden属性,内容会被修剪,并且其余内容是不可见的;
      scroll属性,内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容*/
      overflow:hidden;
    }
    #wrapper ul li {
      float:left;
      width: 178px;
      height: 108px;
      list-style: none;
    }
    #wrapper ul{
      /* position: absolute;绝对定位,位置设置为 absolute 的元素,可定位于相对于包含它的元素的指定坐标。
      此元素的位置可通过 "left"、"top"、"right" 以及 "bottom" 属性来规定
      */
      position: absolute;
      left:0;
      top: 0;
    }
    .button{
      width: 100px;
      height:50px;
      margin: 100px auto;
    }
    </style>
    <script type="text/javascript">
    //实现让一个物体滚动起来
    // setInterval(function () {
    //   var oDiv=document.getElementById('div1');
    //   oDiv.style.left=oDiv.offsetLeft+10+'px';
    // },30);
    window.onload=function(){
      var oDiv=document.getElementById('wrapper');
      var oUl=oDiv.getElementsByTagName('ul')[0];
      var aLi=oUl.getElementsByTagName('li');
      var oA=document.getElementsByTagName('a');
      var speed=2;

      oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
      oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';

      function move(){
        // 向左滚动
        // if(oUl.offsetLeft<-oUl.offsetWidth/2){  //offsetLeft当前元素的左外边框到包含该元素的左内边框之间的距离
        //   oUl.style.left='0';
        // };
        //向右滚动
        if(oUl.offsetLeft>0){
          oUl.style.left=-oUl.offsetWidth/2+'px';
        }
        oUl.style.left=oUl.offsetLeft+speed+'px';
        // oUl.style.left=oUl.offsetLeft-2+'px';
      }

      var timer=setInterval(move,30);

      oDiv.onmouseover=function(){
        clearInterval(timer);
      };    //当鼠标移入,滚动停止

      oDiv.onmouseout=function(){
        timer=setInterval(move,30);
      }
      oA[0].onclick=function(){   //点击按钮向左走
        speed=-2;
      };
      oA[1].onclick=function(){   //点击按钮向右走
        speed=2;
      };

    }
    </script>
  </head>
  <body>
    <!-- <div id='div1' onclick="alert(this.offsetLeft);"></div> -->
    <!-- 返回250,offsetLeft会返回所有左边的距离,也就是综合之后的,包括left:200px;margin: 50px; -->
    <div id="wrapper">
      <ul>
        <li><img src="image/1.jpg" alt=""></li>
        <li><img src="image/2.jpg" alt=""></li>
        <li><img src="image/3.jpg" alt=""></li>
        <li><img src="image/4.jpg" alt=""></li>
      </ul>
    </div>
    <div class='button'>
      <a href="javascript:;">向左</a>
      <a href="javascript:;">向右</a>
    </div>
  </body>

</html>

猜你喜欢

转载自blog.csdn.net/weixin_41586886/article/details/80635722
今日推荐