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


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中dom操作和事件的实例学习-表单验证
Nov 30 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
May 03 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
前端框架ECharts dataset对数据可视化的高级管理
Dec 24 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
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
js脚本编写简单刷票投票系统
2017/06/27 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
《威尼斯的小艇》教学反思
2014/02/17 职场文书
护士个人自我鉴定
2014/03/24 职场文书
初中教师业务学习材料
2014/05/12 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
活动总结范文
2014/08/30 职场文书
财务部岗位职责范本
2015/04/14 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis