关于网页中的无缝滚动的js代码


Posted in Javascript onJune 09, 2016

随便打开一个网页,基本上都会看到无缝滚动或者轮播图,比如淘宝还有360官网的首页

关于网页中的无缝滚动的js代码关于网页中的无缝滚动的js代码关于网页中的无缝滚动的js代码

观察这些轮播图可以发现图片可以来回循环地切换,那么是怎样做到的呢?

做到轮播图或者说无缝滚动主要有两种方式,一种是通过对图片的明暗即透明图的改变来显示或隐藏图片,另一种是通过运动框架,将图片显示在可视区域。这两种方式都会用到同一个东西,那就是定时器。

JavaScript中的定时器有两种,1.setInterval();2.setTimeout();相对应的关闭定时器也有两种方法,clearInterval()和clearTimeout()。两种定时器的区别是前者可以执行多次,而后者只执行一次。

这次只说无缝滚动,下篇介绍轮播图。

实现简单的无缝滚动的代码如下:

/*完整的代码*/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style>
div{position:relative;width:630px;height:220px;border:solid 2px black;overflow:hidden;}
ul{position:absolute;top:10px;left:0;}
img{width:200px;height:200px;float:left;margin-right:10px;border:2px solid yellow;}
li{list-style:none;margin:0;padding:0;}
ul{margin:0;padding:0;}
</style>
<script>
window.onload=function(){
var oUl=document.getElementById("main");
var aLi=oUl.getElementsByTagName("img");
var oInput=document.getElementsByTagName("input")[0];
oUl.innerHTML+=oUl.innerHTML;
oUl.style.width=aLi.length*aLi[0].offsetWidth+"px";
var timer=null;
setInterval(function(){
oUl.style.left=oUl.offsetLeft-8+"px";
if(oUl.offsetLeft<-oUl.offsetWidth/2){
oUl.style.left="0px";
}
},30);
};
</script>
</head>
<body>
<div>
<ul id="main">
<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>
<li><img src="../img/9.jpg"></li>
</ul>
</div>
</div>
</body>
</html>

/-----------------------------------------------------------------------------------------------------------------------------------------------------------/

无缝滚动的布局比较简单,下面主要讲解JS部分内容:

首先分别获取到ul和li,再将ul里面的内容复制一份,通过js动态修改ul的宽度(如果要做到上下无缝滚动,则修改其宽度),最后开定时器,代码中是每隔30微秒ul向左移动8个像素,而当ul的可视左边距小于ul总长度的一半时,使其变为0。由于计算机的运行速度非常快,所以几乎感觉不到这一变化。我们看到的只是图片不断地向左移动,无休止的运动。

以上所述是小编给大家介绍的关于网页中的无缝滚动的js代码,希望对大家有所帮助!

Javascript 相关文章推荐
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
jQuery+PHP星级评分实现方法
Oct 02 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
JS调用某段SQL语句的方法
Oct 20 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
Jan 19 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
Angular2 自定义表单验证器的实现方法
Dec 14 Javascript
Vue使用zTree插件封装树组件操作示例
Apr 25 Javascript
Postman动态获取返回值过程详解
Jun 30 Javascript
原生JavaScript实现五子棋游戏
Nov 09 Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 #Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 #Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 #Javascript
JavaScript事件学习小结(一)事件流
Jun 09 #Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
Jun 09 #Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 #Javascript
JS实现星星评分功能实例代码(两种方法)
Jun 09 #Javascript
You might like
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
Python实现的IP端口扫描工具类示例
2019/02/15 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
使用python去除图片白色像素的实例
2019/12/12 Python
python链表类中获取元素实例方法
2021/02/23 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
关于打架的检讨书
2014/01/17 职场文书
yy生日主持词
2014/03/20 职场文书
设备售后服务承诺书
2014/05/30 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
nginx配置之并发频次限制
2022/04/18 Servers