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


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 相关文章推荐
关于IE中getElementsByClassName不能用的问题解决方法
Aug 26 Javascript
JavaScript作用域与作用域链深入解析
Dec 06 Javascript
三种取消选中单选框radio的方法
Sep 09 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
Sep 26 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
Jan 04 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
纯js实现动态时间显示
Sep 07 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
Vue中使用canvas方法总结
Feb 12 Javascript
详解Bootstrap 学习(一)入门
Apr 12 Javascript
关于React Native 无法链接模拟器的问题
Jun 21 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
javascript事件问题
2009/09/05 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
法学专业应届生求职信
2013/10/16 职场文书
2013年学期结束动员演讲稿
2014/01/07 职场文书
户籍证明的格式
2014/01/13 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
微电影大赛策划方案
2014/06/05 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
小学优秀教师材料
2014/12/15 职场文书
安全主题班会教案
2015/08/12 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP