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


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 相关文章推荐
javaScript 数值型和字符串型之间的转换
Jul 25 Javascript
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
JS中判断null、undefined与NaN的方法
Mar 26 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
May 27 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
微信小程序Getuserinfo解决方案图解
Aug 24 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
使用PHP模拟HTTP认证
2006/10/09 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
Python实现注册登录系统
2017/08/08 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Python request操作步骤及代码实例
2020/04/13 Python
浅析Python 多行匹配模式
2020/07/24 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
什么是GWT的Entry Point
2013/08/16 面试题
机械个人求职信范文
2014/01/24 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
庆七一宣传标语
2014/10/08 职场文书
银行业务授权委托书
2014/10/10 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
功夫熊猫观后感
2015/06/10 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python