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 相关文章推荐
js不能跳转到上一页面的问题解决方法
Mar 01 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
jQuery菜单插件superfish使用指南
Apr 21 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
利用types增强vscode中js代码提示功能详解
Jul 07 Javascript
JS自定义函数实现时间戳转换成date的方法示例
Aug 27 Javascript
vue实例中data使用return包裹的方法
Aug 27 Javascript
详解vue项目中使用token的身份验证的简单实践
Mar 08 Javascript
详解vue2.0模拟后台json数据
May 16 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
使用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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
深入PHP数据加密详解
2013/06/18 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
PHP 快速排序算法详解
2014/11/10 PHP
php绘制一条直线的方法
2015/01/24 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
python挖矿算力测试程序详解
2019/07/03 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
毕业生物理教师求职信
2013/10/17 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
保密工作实施方案
2014/02/24 职场文书
教师产假请假条
2014/04/10 职场文书
婚前保证书
2014/04/29 职场文书
服务明星事迹材料
2014/12/29 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python