• JS无缝滚动


    思路:

    1、获取元素。

    2、要使图片动起来就是用setInterval来改变,如往左边滚动就改变offsetLeft,把图片的左边距改为负数。

    3、当图片往左滚的时候,右边就会出现空白,这时候需要用innerHTML复制原来的4个li 形成8个li

    4、就算有8个li,但总会有滚到尽头的时候,这时就做一个判断当offsetLeft大于ul宽度的一半时,把ul拉回来0的位置(往左滚)。

    5、当offsetLeft大于0时,就把Left设置为负ul 宽度的一半。(往右滚)

    6、鼠标指向图片,图片停止。

    7、鼠标离开图片,图片继续滚动。

    8、往左滚 往右滚就是控制offsetLeft,负数就是向左滚,正数就是向右滚。

    JS代码:

     1 <script>
     2 window.onload=function()
     3 {
     4     var pic=document.getElementById('pic');
     5     var ul=pic.getElementsByTagName('ul')[0];
     6     var li=pic.getElementsByTagName('li');
     7     var left=document.getElementById('left');
     8     var right=document.getElementById('right');
     9     var speed=2;
    10     
    11     ul.innerHTML=ul.innerHTML+ul.innerHTML;
    12     ul.style.width=li[0].offsetWidth*li.length+'px';
    13             
    14     var move=function(){
    15         if(ul.offsetLeft<-ul.offsetWidth/2){
    16             ul.style.left='0';
    17         }
    18         if(ul.offsetLeft>0){
    19             ul.style.left=-ul.offsetWidth/2+'px';
    20         }
    21         ul.style.left=ul.offsetLeft+speed+'px';
    22     }
    23     
    24     var timer=setInterval(move,30);
    25     
    26     pic.onmouseover=function()
    27     {
    28         clearInterval(timer);
    29     };    
    30     
    31     pic.onmouseout=function()
    32     {
    33         setInterval(move,30);
    34     };
    35     
    36     left.onclick=function()
    37     {
    38         speed=-2;
    39     };
    40     
    41     right.onclick=function()
    42     {
    43         speed=2;
    44     };    
    45 };
    46 </script>

    完整代码:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>JS无缝滚动</title>
     6 <style>
     7 *{margin:0;padding:0;}
     8 #pic{position:relative;width:600px;height:150px;overflow:hidden;background:#000;margin:300px auto;}
     9 #pic ul{position:absolute;top:0;left:0;}
    10 #pic ul li{float:left;list-style:none;height:150px;width:150px;}
    11 </style>
    12 <script>
    13 window.onload=function()
    14 {
    15     var pic=document.getElementById('pic');
    16     var ul=pic.getElementsByTagName('ul')[0];
    17     var li=pic.getElementsByTagName('li');
    18     var left=document.getElementById('left');
    19     var right=document.getElementById('right');
    20     var speed=2;
    21     
    22     ul.innerHTML=ul.innerHTML+ul.innerHTML;
    23     ul.style.width=li[0].offsetWidth*li.length+'px';
    24             
    25     var move=function(){
    26         if(ul.offsetLeft<-ul.offsetWidth/2){
    27             ul.style.left='0';
    28         }
    29         if(ul.offsetLeft>0){
    30             ul.style.left=-ul.offsetWidth/2+'px';
    31         }
    32         ul.style.left=ul.offsetLeft+speed+'px';
    33     }
    34     
    35     var timer=setInterval(move,30);
    36     
    37     pic.onmouseover=function()
    38     {
    39         clearInterval(timer);
    40     };    
    41     
    42     pic.onmouseout=function()
    43     {
    44         setInterval(move,30);
    45     };
    46     
    47     left.onclick=function()
    48     {
    49         speed=-2;
    50     };
    51     
    52     right.onclick=function()
    53     {
    54         speed=2;
    55     };    
    56 };
    57 </script>
    58 </style>
    59 </head>
    60 
    61 <body>
    62     <a id="left" href="javascript:"></a>
    63     <a id="right" href="javascript:"></a>
    64 <div id="pic">
    65     <ul>
    66         <li><img src="images/1.jpg" /></li>
    67         <li><img src="images/2.jpg" /></li>
    68         <li><img src="images/3.jpg" /></li>
    69         <li><img src="images/4.jpg" /></li>
    70     </ul>
    71 </div>
    72 </body>
    73 </html>

    offsetLeft:左边距,这个边距是所有作用于元素后的边距,会算上margin padding等

  • 相关阅读:
    对于.net config文件中加密使用
    删除windows不想要的服务
    ora12514: tns: 监听程序当前无法识别连接描述符中请求的服务
    读《.NET设计规范》笔记
    创建服务总结
    加载XML文档
    XMLHttpRequest对象的使用
    ReportView控件的使用
    C#代码的编译过程
    Qt vs设置可执行程序图标
  • 原文地址:https://www.cnblogs.com/52css/p/2943144.html
Copyright © 2020-2023  润新知