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


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 相关文章推荐
PHP PDO操作总结
Nov 17 Javascript
jQuery中:enabled选择器用法实例
Jan 04 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
AngularJS基础 ng-list 指令详解及示例代码
Aug 02 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
深入理解vue-router之keep-alive
Aug 31 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
Sep 26 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 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应用JSON技巧讲解
2013/02/03 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
javascript this用法小结
2008/12/19 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
angularjs自定义过滤器demo示例
2019/08/24 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
新学期开学演讲稿
2014/05/24 职场文书
励志演讲稿大全
2014/08/21 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript