• 纯JS实现多张图片无缝滚动和多张图片上下滚动的效果--JavaScript实例集锦(初学)


    我们会看到很多的网站上会使用多张图片无缝滚动的效果。

    下面我就介绍几种纯JS实现多张图片的无缝滚动,并实现鼠标移到图片上运动停止的效果,可以控制图片左右滚动。
    1.效果展示:

    代码实现:

    <!DOCTYPE html>
    <html>
    <head>
    <title>无缝滚动</title>
    </head>
    <style type="text/css">
    *{margin: 0;padding: 0;}
    #div1{position: relative;border:1px solid #0ff;1100px; height: 180px;margin:50px auto 0;overflow: hidden;}
    #div1 ul{position: absolute;left: 0;}
    #div1 ul li{list-style: none;200px;float: left;padding: 10px;height: 160px;}
    #div1 ul li img{100%;}
    </style>
    <script type="text/javascript">
    window.onload=function(){
    var oDiv=document.getElementById('div1');
    var oUl=oDiv.getElementsByTagName('ul')[0];
    var aLi=oUl.getElementsByTagName('li');
    var aA=document.getElementsByTagName('a');//获取向右向左的箭头
    var timer=null;
    var iSpeed=10;
    oUl.innerHTML+=oUl.innerHTML;//定义图片可以循环播放
    oUl.style.width=aLi.length*aLi[0].offsetWidth+'px';//定义外层ul的宽度,根据图片的个数和每个图片的宽度计算,保证总宽度是可调整的
    function fnMove(){
    if(oUl.offsetLeft<-oUl.offsetWidth/2){
    oUl.style.left=0;
    }else if(oUl.offsetLeft>0){
    oUl.style.left=-oUl.offsetWidth/2+'px';
    }//定义到边界的时候,实现无缝衔接

    oUl.style.left=oUl.offsetLeft+iSpeed+'px';

    //定义图片的右边距随着速度不断不断增加,或减小,实现运动的效果
    }
    timer=setInterval(fnMove,30);
    aA[0].onclick=function(){
    iSpeed=-10;

    //按下左箭头,定义向左运动

    }
    aA[1].onclick=function(){
    iSpeed=10;

    //按下右箭头,定义向右运动
    }
    oDiv.onmouseover=function(){
    clearInterval(timer);

    //鼠标移动到图片上,清除定时器,停止运动
    }
    oDiv.onmouseout=function(){
    timer=setInterval(fnMove,30);

    //鼠标移出,重新开启定时器,重新运动
    }
    };
    </script>
    <body>
    <a href="javascript:;">←</a>
    <a href="javascript:;">→</a>
    <div id="div1">
    <ul>
    <li><img src="miaoflash/images/1.jpg"></li>
    <li><img src="miaoflash/images/2.jpg"></li>
    <li><img src="miaoflash/images/3.jpg"></li>
    <li><img src="miaoflash/images/4.jpg"></li>
    <li><img src="miaoflash/images/5.jpg"></li>
    <div style="clear: none;"></div>
    </ul>
    </div>
    </body>
    </html>

    使用函数,此代码更为简便。
    2.简易的无缝滚动:

    效果图:

    只朝一个方向滚动,鼠标移入暂停滚动,鼠标移出,滚动继续,没有使用单独的函数

    代码实现:

    <!DOCTYPE html>
    <html>
    <head>
        <title>无缝滚动</title>
        <style type="text/css">
        *{margin:0;padding: 0;}
            .roll .wrap{width:1500px;overflow: hidden; height: 344px;margin: 0 auto;position: relative;}
            .roll li{float: left;list-style: none;width: 700px;height: 344px;}
            .roll ul{position: absolute;top: 0;left: 0;}
        }
        </style>
        <script type="text/javascript">
            window.onload=function(){
                var oDiv=document.getElementById('roll');
                var oUl=oDiv.getElementsByTagName('ul')[0];
                var aLi=oUl.getElementsByTagName("li");
                var iSpeed=-5;
                var timer=null;
                oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';
                timer=setInterval(function(){
                    oUl.style.left=oUl.offsetLeft+iSpeed+'px';
                    if(oUl.offsetLeft<-oUl.offsetWidth/2){
                        oUl.style.left='0px';
                    }
                },30);
    
                oUl.onmouseover=function(){
                clearInterval(timer);
            }
            oUl.onmouseout=function(){
                timer=setInterval(function(){
                    oUl.style.left=oUl.offsetLeft+iSpeed+'px';
                    if(oUl.offsetLeft<-oUl.offsetWidth/2){
                        oul.style.left='0px';
                    }
                },30);
            }
            };
            
        </script>
    </head>
    <body>
    <div class="roll" id="roll">
        <div class="wrap">
            <ul>
                <li><img src="images/1.jpg"></li>
                <li><img src="images/2.jpg"></li>
                <li><img src="images/3.jpg"></li>
                <li><img src="images/4.jpg"></li>
            </ul>
        </div>
    </div>
    </body>
    </html>

    3.上下滚动:效果图:

     

    代码实现:

    <!DOCTYPE html>
    <html>
    <head>
        <title>上下滚动</title>
        <style type="text/css">
            *{margin:0;padding: 0;}
            div#miaovslide {text-align: center;}
            .wrap{width:500px;overflow: hidden; height: 700px;margin: 0 auto;position: relative;}
            .wrap img{width: 100%;}
            li{list-style: none;width: 700px;height: 344px;padding: 10px 0;}
            ul{position: absolute;top: 0;left: 0;}
        }
        </style>
        <script type="text/javascript">
            window.onload=function(){
                var oDiv=document.getElementById('miaovslide');
                var oUl=oDiv.getElementsByTagName('ul')[0];
                var aLi=oUl.getElementsByTagName('li');//获取所有的li
                var oUp=document.getElementById('up');//获取向上轮播的按钮
                var oDown=document.getElementById('down');//获取向下轮播的按钮
                var timer=null;//定义定时器
                var iSpeed=0;//定义初始速度
                oUl.innerHTML+oUl.innerHTML; //实现循环无间断的图片流
                oUp.onmousedown=function(){
                    timer=setInterval(doMove,30);
                    iSpeed=-5;
             //当按下向左的按钮时,设置速度为负,即向上滚动
                };
                oUp.onmouseup=function(){
                    clearInterval(timer);
            //当抬起鼠标时,清除定时器
                };
                oDown.onmousedown=function(){
                    iSpeed=5;
                    timer=setInterval(doMove,30);
              //当鼠标按下向右的按钮时,设置速度为正,即向下滚动
    
                }
                oDown.onmouseup=function(){
                    clearInterval(timer);
              //当鼠标抬起时,清除定时器
    
                }
                function doMove(){
                    oUl.style.top=oUl.offsetTop+iSpeed+'px';
                    if(oUl.offsetTop<-oUl.offsetHeight/2){
                        oUl.style.top='0px';
                    }else if(oUl.offsetTop>0){
                        oUl.style.top=-oUl.offsetHeight/2+'px';
                    }
                };
            };
            
        </script>
    </head>
    <body>
    <div class="slide_module" id="miaovslide">
        <div id="up"><img src="images/prevup.png"></div>
        <div class="wrap">
            <ul>
                <li><img src="images/1.jpg"></li>
                <li><img src="images/2.jpg"></li>
                <li><img src="images/3.jpg"></li>
                <li><img src="images/4.jpg"></li>
            </ul>
        </div>
        <div id="down"><img src="images/nextdown.png"></div>
    </div>
    </body>
    </html>
  • 相关阅读:
    unity3d 免费好用的数据库处理框架 数据库直连框架
    为.NET搭建Linux的开发环境,鄙视那些将简单事情复杂化的人
    为Linux重新开发MVC,有图有真相
    让我们一起用开源数据库和开源框架废弃Access
    C#子线程执行完后,调用主线程的方法
    javascript 将 table 导出 Excel ,可跨行跨列
    Easyui中 messager.alert 后某文本框获得焦点
    Easyui中 alert 带回调函数的 消息框
    wamp 在本地安装PHP环境, 开启 curl 扩展
    H+ 编辑tab页 保存后 刷新列表tab页 并关闭自已。tabA页调用tabB页的方法
  • 原文地址:https://www.cnblogs.com/cheryshi/p/8417847.html
Copyright © 2020-2023  润新知