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


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 前的按键判断代码
Mar 19 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
基于javascript实现泡泡大冒险网页版小游戏
Mar 23 Javascript
Bootstrap每天必学之导航组件
Apr 25 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
May 10 Javascript
JavaScript生成验证码并实现验证功能
Sep 24 Javascript
jQuery使用Layer弹出层插件闪退问题
Dec 22 Javascript
select自定义小三角样式代码(实用总结)
Aug 18 Javascript
利用Three.js如何实现阴影效果实例代码
Sep 26 Javascript
详解React native fetch遇到的坑
Aug 30 Javascript
基于Proxy的小程序状态管理实现
Jun 14 Javascript
详解JavaScript的this指向和绑定
Sep 08 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 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
深入密码加salt原理的分析
2013/06/06 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php简单实现快速排序的方法
2015/04/04 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
JS获取html对象的几种方式介绍
2013/12/05 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python 元类实例解析
2018/04/04 Python
python操作redis方法总结
2018/06/06 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
python如何写try语句
2020/07/14 Python
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
实习护士自我鉴定
2013/10/13 职场文书
教学评估实施方案
2014/03/16 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
活着观后感
2015/06/03 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
CentOS安装Nginx并部署vue
2022/04/12 Servers
css弧边选项卡的项目实践
2023/05/07 HTML / CSS