js实现滚动效果

  滚动效果通过setInterval定时函数去实现的,setInterval定时让ul每过一段时间就移动,移动其实是left的值在变大,让ul移动的必须让这个div是绝对定位的,这样left属性就会起效果,然后让div的left值越来越大,这样ul就在移动。实现移动后复制ul,让后面的1234隐藏起来,这样当前面的方块1消失,会从后面的方块1里出现,但是当后面的方块全走完,发现看不到滚动。这里就需要我们做一些处理了,当后面的方块1滚到最左边的时候,前面的1234其实是全消失了的。这时我们就把方块重头再滚,每当后面的方块1滚动最左边就相当于重置,这样就实现了无限滚动了

  实现原理的草图

  

  代码如下

<html>

<head>
<title></title>
</head>
    <style>
        *{
            margin:0px;
            padding:0px;
        }
        #div1{
            height:100px;
            width:400px;
            margin-left:100px;
            position:relative;
            background:black;
            overflow:hidden;
        }
        #div1 ul{

            left:0px;
            top:0px;
            position:absolute;

        }
        #div1 ul li{
            float:left;
            width:100px;
            height:100px;
            background:yellow;
            list-style:none;
            //border:1px solid #ccc;
        }
    </style>
    <script>
        window.onload=function(){
            var oDiv=document.getElementById(‘div1‘)    //获取到div
            var oUl=oDiv.getElementsByTagName(‘ul‘)[0]  //获取到ul
            oUl.innerHTML=oUl.innerHTML+oUl.innerHTML   //实际上是把ul内容复制了一份,会出现8个li,复制出来的li隐藏超出了div的长度,隐藏起来了
            oUl.style.width=oUl.offsetWidth+oUl.offsetWidth  //把ul长度设置为2倍,因为复制了ul

            setInterval(function(){

                if(oUl.offsetLeft<=-oUl.offsetWidth/2){     //当最后方块1滚动最左边的时候,就把ul还原,重新滚动,这是实现无限滚动最重要的判断
                    oUl.style.left=‘0‘;
                }

                oUl.style.left=oUl.offsetLeft-2+‘px‘       //每过40毫秒left值减2,这样就会一直往左移动
            },40)
        }

    </script>
<body>
    <div id="div1">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
    </div>
</body>

</html>

原文地址:https://www.cnblogs.com/superCwen/p/9813280.html

时间: 2024-10-12 21:45:18

js实现滚动效果的相关文章

js文字滚动效果实现

<!doctype html> <html> <head> <meta charset="utf-8"> <title>字幕横向滚动</title> <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> <style> ul,li{ margin: 0; padding

js文字滚动效果

function (global) { var logo = document.getElementById('logo'); var text = document.createTextNode(''); logo.appendChild(text); var str = "Welcome to FoOTOo Lab"; var timer = setInterval(writer, 100); var count = 0; function writer() { if (count

利用原生JS实现网页1920banner图滚动效果

内容描述:随着PC设备硬件性能的进步和分辨率的不断提高,现在主流网站逐渐开始采用1920banner图,为适应这一趋势,博主设计了1920banner图的滚动效果,代码利用了原生JS实现了1920banner图的切换效果,并针对低分辨率电脑设备进行了适配,实现了JS代码与HTML代码的完全分离,符合w3c的标准使用规范,希望能给各位开发者朋友以帮助和参考.如发现有缺陷和不足,欢迎大家予以指正,如有更好的意见或解决方法,可在评论区交流互动.一下为代码内容: <!DOCTYPE html> <

全屏滚动效果H5FullscreenPage.js

前提: 介于现在很多活动都使用了 类似全屏滚动效果 尤其在微信里面 我自己开发了一个快速构建 此类项目的控件 与市面上大部分控件不同的是此控件还支持元素的动画效果 并提供多种元素效果 基于zepto.js 功能清单: 1 快速实现页面全屏滚动效果.并提供多种翻页效果,兼容大部分ios和android系统. 2 支持在页面中添加多种动画元素效果 来实现淡入,滑入等效果. 3 支持配置音乐功能. 4 支持摇一摇接口功能. 组件核心代码原理: 1 页面滚动 在移动页面上如果想使用滚动,如过没有任何动画

页面滚动显示或隐藏元素Headroom.js插件帮助你实现滚动效果

Headroom.js 是什么? Headroom.js 是一个轻量级.高性能的JS小工具(不依赖任何工具库!),它能在页面滚动时做出响应.此页面顶部的导航条就是一个鲜活的案例,当页面向下滚动时,导航条消失,当页面向上滚动时,导航条就出现了. Headroom.js 有什么用? 固定页头(导航条)可以方便用户在各个页面之间切换.但是这也会带来些问题…本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com) 大屏幕一般都是宽度

js实现点击按钮实现上一张下一张相册滚动效果

/****判断图片是否构成滚动效果*/$(function(){    if($("#bar").find('img').size()*71<=$("#bar").width()){           $("#table_img").width($("#bar").find('img').size()*71);    }    if($("#bar").find('img').size()*71&g

js全屏滚动效果

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>全屏滚动代码测试</title> 6 <style type="text/css"> 7 body,ul,li{ margin: 0; padding: 0;} 8 #tbody{ overflow: hidden; clear: both;

iscroll.js 移动端手触滚动效果。

function loaded() {  var myscroll=new iScroll("wrapper",{hScrollbar:false, vScrollbar:false});}window.addEventListener("load",loaded,false); http://www.gafish.net/api/iScroll.html http://www.cnblogs.com/aaronjs/p/3147470.html iscroll.j

JS实现图片滚动效果

源码参考菜鸟教程:<iframe width="100%" height="300" src="https://c.runoob.com/iframe/2037" allowfullscreen="allowfullscreen" frameborder="0"></iframe> 要实现图片自动滚动需要稍微修改一下源码(我怕忘记自己当时怎么修改的,因此记录一下): 示例代码: 1