无缝滚动改进版支持上下左右滚动(封装成函数)


Posted in Javascript onDecember 04, 2012
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>无缝滚动——上下</title>
    <style type="text/css">
    *{margin:0;padding:0;}
    li{list-style:none;}
    img{border:0;}
    #scroll{width:178px;margin:50px auto;position:relative;}
    .btn{display:block;width:27px;height:27px;position:absolute;left:75px;}
    .up{background:url(images/up.gif);top:0;}
    .down{background:url(images/down.gif);top:490px;}
    .content{height:440px;overflow:hidden;position:relative;top:40px;}
    .content ul{position:absolute;top:0;left:0;}
    .content li{height:110px;}
    </style>
</head>
<body>
    <div id="scroll">
        <a href="javascript:;" class="btn up"></a>
        <a href="javascript:;" class="btn down"></a>
        <div class="content">
            <ul>
                <li><a href="#" title="111"><img src="images/1.jpg" alt="111" width="178" height="108"/></a></li>
                <li><a href="#" title="222"><img src="images/2.jpg" alt="222" width="178" height="108"/></a></li>
                <li><a href="#" title="333"><img src="images/3.jpg" alt="333" width="178" height="108"/></a></li>
                <li><a href="#" title="444"><img src="images/4.jpg" alt="444" width="178" height="108"/></a></li>
            </ul>
        </div>
    </div>
</body>
</html>
<script type="text/javascript" src="scroll.js"></script>
<script type="text/javascript">
window.onload = function(){
    scroll('top',1,1000);
};
</script>           

scroll.js:
/**********
    功能:实现水平或垂直无缝滚动
    参数:direction方向,总共4个值:left,right,top,bottom
          speed移动距离
          iTime多少时间后开始移动,若不写则页面加载完开始移动
**********/
function scroll(direction,speed,iTime){
    var oDiv = document.getElementById('scroll');
    var oUl = oDiv.getElementsByTagName('ul')[0];
    var aLi = oDiv.getElementsByTagName('li');
    var aBtn = oDiv.getElementsByTagName('a');
    var timer = null;
    var iSpeed = 0;
    var flag = true;    //判断水平移动还是垂直移动    oUl.innerHTML += oUl.innerHTML;
    switch(direction){
        case 'left':
            iSpeed = -speed;
            oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';
            flag = true;
            break;
        case 'right':
            iSpeed = speed;
            oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';
            flag = true;
            break;
        case 'top':
            iSpeed = -speed;
            flag = false;
            break;
        case 'bottom':
            iSpeed = speed;
            flag = false;
            break;
    };
    setTimeout(move,iTime);
    //左按钮和上按钮
    aBtn[0].onclick = function(){
        clearInterval(timer);
        iSpeed = -speed;
        move();
    };
    //右按钮和下按钮
    aBtn[1].onclick = function(){
        clearInterval(timer);
        iSpeed = speed;
        move();
    };
    oUl.onmouseover = function(){
        clearInterval(timer);
    };
    oUl.onmouseout = function(){
        move();
    };
    function move(){    
        timer = setInterval(function(){
            if(flag){
                oUl.style.left = oUl.offsetLeft + iSpeed + 'px';
                if(oUl.offsetLeft < -oUl.offsetWidth / 2){
                    oUl.style.left = '0';
                }else if(oUl.offsetLeft > 0){
                    oUl.style.left = - oUl.offsetWidth / 2 + 'px';
                }
            }else{
                oUl.style.top = oUl.offsetTop + iSpeed + 'px';
                if(oUl.offsetTop <= - oUl.offsetHeight / 2){
                    oUl.style.top = '0';
                }else if(oUl.offsetTop >= 0){
                    oUl.style.top = - oUl.offsetHeight / 2 + 'px';
                };
            };
        },30);
    };
};

需要注意的是:html 结构必须要像上面的结构一样。

 

Javascript 相关文章推荐
基于Jquery的标签智能验证实现代码
Dec 27 Javascript
jquery入门—访问DOM对象方法
Jan 07 Javascript
js字符串转换成xml对象并使用技巧解读
Apr 18 Javascript
javascript匿名函数实例分析
Nov 18 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
Jul 09 Javascript
JavaScript Math 对象常用方法总结
Apr 28 Javascript
全面理解JavaScript中的闭包
May 12 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
vue实现公共方法抽离
Jul 31 Javascript
js动画(animate)简单引擎代码示例
Dec 04 #Javascript
JavaScript中“+”的陷阱深刻理解
Dec 04 #Javascript
将光标定位于输入框最右侧实现代码
Dec 04 #Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 #Javascript
js 限制数字 js限制输入实现代码
Dec 04 #Javascript
JSON语法五大要素图文介绍
Dec 04 #Javascript
js关闭子窗体刷新父窗体实现方法
Dec 04 #Javascript
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
python 判断一个进程是否存在
2009/04/09 Python
pyramid配置session的方法教程
2013/11/27 Python
python列表去重的二种方法
2014/02/14 Python
Python实现端口复用实例代码
2014/07/03 Python
python中List的sort方法指南
2014/09/01 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Python assert关键字原理及实例解析
2019/12/13 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
python求解汉诺塔游戏
2020/07/09 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
C#笔试题和英文面试题
2013/02/07 面试题
力学专业毕业生自荐信
2013/11/17 职场文书
小学班主任个人总结
2015/03/03 职场文书
教师节感想
2015/08/11 职场文书