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下的keyCode键码值表
Apr 10 Javascript
JavaScript写的一个自定义弹出式对话框代码
Jan 17 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
Sep 20 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
深入理解JavaScript内置函数
Jun 03 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
Layui实现数据表格默认全部显示(不要分页)
Oct 26 Javascript
Element Dialog对话框的使用示例
Jul 26 Javascript
vue使用节流函数的踩坑实例指南
May 20 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 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产生随机字符串函数
2006/12/06 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
PHP的全局错误处理详解
2016/04/25 PHP
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
python实现web方式logview的方法
2015/08/10 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
商场促销活动方案
2014/02/08 职场文书
高中教师考核方案
2014/05/18 职场文书
英文演讲稿开场白
2014/08/25 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
银行贷款委托书范本
2014/10/11 职场文书
股份转让协议书范本
2015/01/27 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫