关于网页上图片无缝滚动的一些思路

从现在的一些常见网站上,无缝滚动的例子用得非常普遍,可以说很常见,也比较实用,下面我们就来简单看看,具体的一些想法怎么实现的:

先简单来看一下原理:

          首先我们看到网页上一组图片不停滚动,一次循环之后又从第一张开始,其实简单的思路是:我们设置两组图片,当第一组图片滚动到结尾时,对应的第一组图片又瞬间拉回到起始位置。

          当图片向另外一个方向滚动时,当后面一组图片滚动到结尾时:也是瞬间拉回到开头。

           下面我们简单来看一下代码:

           

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
        *{ margin: 0;padding: 0; }                 //页面的简单布局
        #div1{ width: 600px;height: 120px;border: 1px solid #ccc; margin: 10px auto;position: relative;overflow:hidden;}
        #div1 ul{ list-style-type: none;height:120px;position: absolute;left: 0;top: 0; }
        #div1 ul li{float: left;width: 100px;height: 100px;padding: 10px;}          
    </style>
    <script type="text/javascript">
        window.onload = function(){
            var oUl = document.getElementById("ul1");
            var oLi = oUl.getElementsByTagName(‘li‘);
            var timer = null;                      //声明一个接受定时器返回值的变量,初始值为空
            var iSpeed = -2;
            oUl.style.width = (oLi.length)*oLi[0].offsetWidth+‘px‘;  //动态的添加UL的长度,这样可以适应布局
            timer=setInterval(function(){
                if(oUl.offsetLeft<-oUl.offsetWidth/2){        //首先向左滚动,如果滚到一半,此时left应该是-oUl.offsetWidth/2,我们就将他拉回来到起始的位置
                    oUl.style.left = 0+‘px‘;
                }
                if(oUl.offsetLeft>0){
                    oUl.style.left = -oUl.offsetWidth/2+‘px‘;            //同理向右跑到一半,原理一样,就拉回来
                }
                oUl.style.left = oUl.offsetLeft+iSpeed+‘px‘;
            },30);
            oUl.onmouseover = function(){           //鼠标移入到图片上时,就停止运动
                clearInterval(timer);
            }
            oUl.onmouseout = function(){
                timer=setInterval(function(){
                if(oUl.offsetLeft<-oUl.offsetWidth/2){      //鼠标移出时,又开始运动
                    oUl.style.left = 0+‘px‘;
                }
                if(oUl.offsetLeft>0){
                    oUl.style.left = -oUl.offsetWidth/2+‘px‘;            //向右跑到一半,就拉回来
                }
                oUl.style.left = oUl.offsetLeft+iSpeed+‘px‘;
            },30);
            }
        }
    </script>
</head>
<body>
    <div id="div1">
        <ul id="ul1">                    //这里我们设置了两组图片
            <li><img src="img/宁静的海1.jpg"></li>
            <li><img src="img/就这样1.jpg"></li>
            <li><img src="img/宁静1.jpg"></li>
            <li><img src="img/bus1.jpg"></li>
            <li><img src="img/cry1.jpg"></li>

<li><img src="img/宁静的海1.jpg"></li>
            <li><img src="img/就这样1.jpg"></li>
            <li><img src="img/宁静1.jpg"></li>
            <li><img src="img/bus1.jpg"></li>
            <li><img src="img/cry1.jpg"></li>
            
        </ul>
    </div>
</body>
</html>

当然我么可以简化代码:

function startMove(){

timer=setInterval(function(){
                if(oUl.offsetLeft<-oUl.offsetWidth/2){      //鼠标移出时,又开始运动
                    oUl.style.left = 0+‘px‘;
                }
                if(oUl.offsetLeft>0){
                    oUl.style.left = -oUl.offsetWidth/2+‘px‘;            //向右跑到一半,就拉回来
                }
                oUl.style.left = oUl.offsetLeft+iSpeed+‘px‘;
            },30);

}

将这段重复代码写成一个函数,后面直接调用即可。  而且,我么可以添加一个向左或者向右的按钮:

oBtn1.onclick = function(){
                iSpeed = -2;
            }
            oBtn2.onclick = function(){
                iSpeed = 2;
            }

通过设置速度的正负值,来改变方向。

时间: 2024-10-25 14:46:27

关于网页上图片无缝滚动的一些思路的相关文章

JavaScript学习笔记5 之 计时器 &amp; scroll、offset、client系列属性 &amp; 图片无缝滚动

一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行一次相应的函数(不重复) 清除计时器: clearInterval( ); clearTimeout( ); 当计时器调用执行完毕时,它将返回一个timer ID, 如果将该ID传递给clearInterval,便可以终止代码的执行. 实例: 页面布局: <div id="wrap"

javascript实现图片无缝滚动-------Day 27

今天感冒变严重了,鼻涕止不住啊,一卷卫生纸就这样报废了,还是不想吃药,熬熬总能熬过去吧,状态不是很好,看这么个小应用竟然看了很久的时间,到最后才像猛的明白了一样,而且查着好像有好几种做法的,今天先说说这种吧,比较好理解额. 所谓"图片无缝滚动",我们可以这样来理解,如果只用marquee,则需要尾部也离开容器了,头部才能从头部另一端出现,重新进行滚动,如是进行循环,而无缝滚动,就是说一种首尾相连的效果,头部是咬在尾部上的,尾部全部漏出来后,后面紧挨着显示头部的部分,这样首尾相连进行的滚

jquery图片无缝滚动特效

jquery图片无缝滚动插件制作左右无缝滚动图片和上下无缝滚动图片,一款简单的jQuery无缝滚动代码.JS代码 <script type="text/javascript"> //图片滚动 调用方法 imgscroll({speed: 30,amount: 1,dir: "up"}); $.fn.imgscroll = function(o){ var defaults = { speed: 40, amount: 0, width: 1, dir:

jquery图片无缝滚动代码左右 上下无缝滚动图片

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

第41天:匀速、缓动运动和图片无缝滚动

一.匀速运动和缓动运动 缓动运动公式:leader=leader+(target-leader)/10;//leader为初始值0,target为结束值,10可以改变,值越大,速度越慢 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>运动</title> 6 <style>

js多组图片无缝滚动

原文:js多组图片无缝滚动 源代码下载地址:http://www.zuidaima.com/share/1550463717608448.htm

javascript实现图片无缝滚动(scrollLeft的使用方法介绍)

<!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style> .piczhanshi{width:976px;height:167px;border:1px #999999 solid;

Javascript图片无缝滚动

js无缝滚动效果几乎在任何网页上都能看到它的身影,有的可能是使用插件,其实使用原始的javascript比较简单. 主要的是使用js位置知识. 1.innerHTML:设置或获取元素的html标签 2.scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距 3.offsetWidth:设置或获取指定标签的宽度 4.setInterval():设置方法定时启动 5.clearInterval();清除定时器 效果图: 先睹为快:demo <!DOCTYPE html>

js图片无缝滚动代码

想必大家都注意到<marquee>的不循环滚动,所以出现了很多替代脚本,或iframe或JS输出<marquee>,不管怎么做,都略显麻烦.下面说一下这个相对简单的实现思路:一个设定宽度并且隐藏超出它宽度的内容的容器demo,里面放demo1和 demo2,demo1是滚动内容,demo2为demo1的直接克隆,通过不断改变demo1的scrollTop或者scrollLeft达到滚动的目的,当滚动至demo1与demo2的交界处时直接跳回初始位置,因为demo1与demo2一样,