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语言结构小记(一)
Sep 10 Javascript
得到form下的所有的input的js代码
Nov 07 Javascript
javascript随机显示背景图片的方法
Jun 18 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
基于JavaScript实现随机颜色输入框
Dec 10 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
Dec 13 Javascript
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
实现Vue的markdown文档可以在线运行的方法示例
Dec 11 Javascript
详解vue项目打包步骤
Mar 29 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
vue3中轻松实现switch功能组件的全过程
Jan 07 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
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Python访问纯真IP数据库脚本分享
2015/06/29 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python3 socket同步通信简单示例
2017/06/07 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python实现Windows电脑定时关机
2018/06/20 Python
Python 必须了解的5种高级特征
2020/09/10 Python
python如何实现word批量转HTML
2020/09/30 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
如何提高MySql的安全性
2014/06/19 面试题
解释下面关于J2EE的名词
2013/11/15 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书