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 window对象属性整理
Oct 24 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
jQuery插件pagination实现无刷新分页
May 21 Javascript
浅析jQuery 3.0中的Data
Jun 14 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
Jul 05 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
express框架下使用session的方法
Jul 31 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 05 Javascript
详解Vite的新体验
Feb 22 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
php操作excel文件 基于phpexcel
2010/07/02 PHP
php jsonp单引号转义
2014/11/23 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
简单了解Python write writelines区别
2020/02/27 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
生产部主管岗位职责
2014/01/06 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
车间统计员岗位职责
2015/04/14 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
你会写请假条吗?
2019/06/26 职场文书
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android