Javascript 实现图片无缝滚动


Posted in Javascript onDecember 19, 2014

效果 : 鼠标移入图片 停止滚动, 鼠标移出自动滚动

可以调整向左或右方向滚动

<style type="text/css">

            * {

                margin: 0;

                padding: 0;

            }

            #div1 {

                overflow: hidden;

                width: 712px;

                height: 108px;

                margin: 100px auto;

                position: relative;

                background: red;

            }

            #div1 ul {

                position: absolute;

                left: 0;

                top: 0;

            }

            #div1 ul li {

                float: left;

                width: 178px;

                height: 108px;

                list-style: none;

            }

        </style>
<body>

        <a href="javascript:;">向左走</a>

        <a href="javascript:;">向右走</a>

        <div id="div1">

            <ul>

                <li>

                    <img src="img/无缝滚动/1.jpg" />

                </li>

                <li>

                    <img src="img/无缝滚动/2.jpg" />

                </li>

                <li>

                    <img src="img/无缝滚动/3.jpg" />

                </li>

                <li>

                    <img src="img/无缝滚动/4.jpg" />

                </li>

            </ul>

        </div>

    </body>

以上是一个简单的布局,下面是主要的Javascript 代码

<script type="text/javascript">

            window.onload = function() {

                var oDiv = document.getElementById("div1");

                var oUl = oDiv.getElementsByTagName('ul')[0];

                var aLi = oUl.getElementsByTagName('li');

                var speed = 2;            

                oUl.innerHTML += oUl.innerHTML;

                oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';

                function move() {

                    if (oUl.offsetLeft < -oUl.offsetWidth / 2) {

                        oUl.style.left = '0';

                    }

                    if (oUl.offsetLeft > 0) {

                        oUl.style.left = -oUl.offsetWidth / 2 + 'px';

                    }

                    oUl.style.left = oUl.offsetLeft + speed + 'px';

                }

                var timer = setInterval(move, 30);

                oDiv.onmouseover = function() {

                    clearInterval(timer);

                };

                oDiv.onmouseout = function() {

                    timer = setInterval(move, 30);

                };

                document.getElementsByTagName('a')[0].onclick = function() {

                    speed = -2;

                };

                document.getElementsByTagName('a')[1].onclick = function() {

                    speed = 2;

                };

            }

        </script>

简单讲下思路:

首先设置ul 里面的图片一共有8张 oUl.innerHTML += oUl.innerHTML;

在 计算ul的宽度为 li的实际宽度*8

之后将 多余的内容隐藏

注意 : oUl.offsetLeft 肯定是负值

所以判断的时候不要把负号漏掉

if (oUl.offsetLeft < -oUl.offsetWidth / 2) { 

        oUl.style.left = '0';                  
}

这段表示  图片滚动到一半了,迅速把图片拉回来,因为程序执行的太快,所以几乎看不出来 实现无缝滚动

最后使用 变量 speed 来控制左右方向的滚动。

以上代码只是实现了最基本的功能,小伙伴们可以在此基础上继续完善。

Javascript 相关文章推荐
枚举JavaScript对象的函数
Dec 22 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
jQ处理xml文件和xml字符串的方法(详解)
Nov 22 Javascript
node.js学习之断言assert的使用示例
Sep 28 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
js 函数性能比较方法
Aug 24 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 #Javascript
JS获取各种宽度、高度的简单介绍
Dec 19 #Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 #Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 #Javascript
jQuery多级弹出菜单插件ZoneMenu
Dec 18 #Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 #Javascript
jQuery实现视频作为全屏幕背景
Dec 18 #Javascript
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php date()日期时间函数详解
2010/05/16 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
用原生js做单页应用
2017/01/17 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
numpy.random.seed()的使用实例解析
2018/02/03 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python单例模式的多种实现方法
2019/07/26 Python
django ajax发送post请求的两种方法
2020/01/05 Python
Python reduce函数作用及实例解析
2020/05/08 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
学生会离职感言
2014/02/11 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers