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 相关文章推荐
通过DOM脚本去设置样式信息
Sep 19 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
Nov 26 Javascript
jQuery对象的selector属性用法实例
Dec 27 Javascript
javascript内置对象操作详解
Feb 04 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
基于angular2 的 http服务封装的实例代码
Jun 29 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
javascript canvas API内容整理
Feb 16 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 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读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
php简单的上传类分享
2016/05/15 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
PHP中“=&gt;
2019/03/01 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
javawscript 三级菜单的实现原理
2009/07/01 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
护理自荐信
2013/10/22 职场文书
心得体会范文
2014/01/04 职场文书
班组安全员工作职责
2014/02/01 职场文书
人事专员职责
2014/02/22 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
2016年教师新年寄语
2015/08/18 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery