zoukankan      html  css  js  c++  java
  • Javascript 学习笔记 无缝滚动

    效果 : 鼠标移入图片 停止滚动, 鼠标移出自动滚动

    可以调整向左或右方向滚动

    <style type="text/css">
                * {
                    margin: 0;
                    padding: 0;
                }
                #div1 {
                    overflow: hidden;
                    width: 712px;
                    height: 108px;
                    margin: 100px auto;
                    position: relative;
                    background: red;
                }
                #div1 ul {
                    position: absolute;
                    left: 0;
                    top: 0;
                }
                #div1 ul li {
                    float: left;
                    width: 178px;
                    height: 108px;
                    list-style: none;
                }
            </style>
    <body>
            <a href="javascript:;">向左走</a>
            <a href="javascript:;">向右走</a>
            <div id="div1">
                <ul>
                    <li>
                        <img src="img/无缝滚动/1.jpg" />
                    </li>
                    <li>
                        <img src="img/无缝滚动/2.jpg" />
                    </li>
                    <li>
                        <img src="img/无缝滚动/3.jpg" />
                    </li>
                    <li>
                        <img src="img/无缝滚动/4.jpg" />
                    </li>
                </ul>
            </div>
    
        </body>

    以上是一个简单的布局,下面是主要的Javascript 代码

    <script type="text/javascript">
                window.onload = function() {
                    var oDiv = document.getElementById("div1");
                    var oUl = oDiv.getElementsByTagName('ul')[0];
                    var aLi = oUl.getElementsByTagName('li');
                    var speed = 2;            
                    oUl.innerHTML += oUl.innerHTML;
    
                    oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';
    
                    function move() {
    
                        if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
                            oUl.style.left = '0';
                        }
    
    
                        if (oUl.offsetLeft > 0) {
                            oUl.style.left = -oUl.offsetWidth / 2 + 'px';
                        }
    
                        oUl.style.left = oUl.offsetLeft + speed + 'px';
    
                    }
    
                    var timer = setInterval(move, 30);
    
                    oDiv.onmouseover = function() {
                        clearInterval(timer);
                    };
    
                    oDiv.onmouseout = function() {
                        timer = setInterval(move, 30);
                    };
    
                    document.getElementsByTagName('a')[0].onclick = function() {
                        speed = -2;
                    };
                    document.getElementsByTagName('a')[1].onclick = function() {
                        speed = 2;
                    };
                }
            </script>

    简单讲下思路:

    首先设置ul 里面的图片一共有8张 oUl.innerHTML += oUl.innerHTML;

    在 计算ul的宽度为 li的实际宽度*8

    之后将 多余的内容隐藏

    注意 : oUl.offsetLeft 肯定是负值

    所以判断的时候不要把负号漏掉

    if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
            oUl.style.left = '0';                   

    }

    这段表示  图片滚动到一半了,迅速把图片拉回来,因为程序执行的太快,所以几乎看不出来 实现无缝滚动

    最后使用 变量 speed 来控制左右方向的滚动。

  • 相关阅读:
    js没有重载
    零基础学习hadoop到上手工作线路指导(初级篇)
    hadoop1.x和2.x的一些主要区别
    LIBCURL教程
    钩子函数大全(2)
    Visual Studio快捷键
    Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo
    Hadoop2.7.1安装与配置
    超详细单机版搭建hadoop环境图文解析
    Windows下运行Hadoop
  • 原文地址:https://www.cnblogs.com/IcemanZB/p/4166938.html
Copyright © 2011-2022 走看看