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中的this实例分析
Apr 28 Javascript
JScript分割字符串示例代码
Sep 04 Javascript
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
浅析jQuery Mobile的初始化事件
Dec 03 Javascript
浅谈js和css内联外联注意事项
Jun 30 Javascript
C#微信小程序服务端获取用户解密信息实例代码
Mar 10 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
May 12 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
Jul 19 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
vue实现下载文件流完整前后端代码
Nov 17 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
require.js的用法详解
2015/10/20 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
angular实现图片懒加载实例代码
2017/06/08 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
学python爬虫能做什么
2020/07/29 Python
python爬取微博评论的实例讲解
2021/01/15 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
商务英语专业自荐信
2013/10/14 职场文书
军训的自我鉴定
2013/12/10 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
工地食品安全责任书
2015/05/09 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书