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入门之基本函数详解
Oct 21 Javascript
分享Javascript中最常用的55个经典小技巧
Nov 29 Javascript
js添加select下默认的option的value和text的方法
Oct 19 Javascript
iScroll中事件点击触发两次解决方案
Mar 11 Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 Javascript
jquery实现触发时更新下拉列表内容的方法
Dec 02 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
Mar 13 Javascript
微信小程序 网络API 上传、下载详解
Nov 09 Javascript
BootStrop前端框架入门教程详解
Dec 25 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
Oct 26 Javascript
vue前端工程的搭建
Mar 31 Vue.js
使用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
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
javascript 打印页面代码
2009/03/24 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
python如何把字符串类型list转换成list
2020/02/18 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
以太网Ethernet IEEE802.3
2013/08/05 面试题
销售找工作求职信
2013/12/20 职场文书
公司晚会主持词
2014/03/22 职场文书
法院授权委托书格式
2014/09/28 职场文书
2015年个人思想总结
2015/03/09 职场文书
介绍信范文大全
2015/05/07 职场文书
学校远程教育工作总结
2015/08/11 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
MySQL窗口函数的具体使用
2021/11/17 MySQL