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


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 多行文本框(textarea)高度变化
Jul 03 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
Mar 16 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
js中遍历Map对象的方法
Jul 27 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
Feb 16 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
ES6下子组件调用父组件的方法(推荐)
Feb 23 Javascript
小程序页面动态配置实现方法
Feb 05 Javascript
js实现搜索提示框效果
Sep 05 Javascript
vue常用高阶函数及综合实例
Feb 25 Vue.js
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图片验证码代码
2008/03/27 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PHP闭包函数详解
2016/02/13 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
Python模块相关知识点小结
2020/03/09 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
python-地图可视化组件folium的操作
2020/12/14 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
税务专业毕业生自荐信
2013/11/10 职场文书
老干部工作汇报材料
2014/10/28 职场文书
清洁工个人总结
2015/03/04 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
筑梦中国心得体会
2016/01/18 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python
python中mongodb包操作数据库
2022/04/19 Python