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 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
js字母大小写转换实现方法总结
Nov 13 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
深入理解javascript中return的作用
Dec 30 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
Feb 18 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
Jul 29 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
Aug 16 Javascript
JavaScript第一篇之实现按钮全选、功能
Aug 21 Javascript
微信小程序实现天气预报功能
Jul 18 Javascript
解决vue无法设置滚动位置的问题
Oct 07 Javascript
vue下载二进制流图片操作
Oct 26 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
用session做客户验证时的注意事项
2006/10/09 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
JS中的phototype详解
2017/02/04 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
python实现图像全景拼接
2020/03/27 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
小学生检讨书大全
2014/02/06 职场文书
工作证明英文模板
2014/10/21 职场文书
西湖英语导游词
2015/02/06 职场文书
小平您好观后感
2015/06/09 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL