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


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 相关文章推荐
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 Javascript
JavaScript自执行闭包的小例子
Jun 29 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
new Date()问题在ie8下面的处理方法
Jul 31 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
JavaScript实现的MD5算法完整实例
Feb 02 Javascript
Angular2表单自定义验证器的实现
Oct 19 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
深度解读vue-resize的具体用法
Jul 08 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 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中Smarty模板初体验
2011/08/08 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
laravel入门知识点整理
2020/09/15 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
jquery 手势密码插件
2017/03/17 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
python的flask框架难学吗
2020/07/31 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
2013英文求职信模板范文
2013/11/15 职场文书
运动会表扬稿大全
2014/01/16 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
社区中秋节活动方案
2014/01/29 职场文书
小学班主任寄语大全
2014/04/04 职场文书
土建工程师岗位职责
2014/06/10 职场文书
大专学生求职信
2014/07/04 职场文书
重阳节慰问信
2015/02/15 职场文书
财务会计求职信范文
2015/03/20 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技