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 相关文章推荐
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 Javascript
一个很有趣3D球状标签云兼容IE8
Aug 22 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
浅析js中mvvm模式实现的原理
Oct 06 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
关于vue的列表图片选中打钩操作
Sep 09 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 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 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
急诊科护士自我鉴定
2013/10/14 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript