刚刚接触JS,网上找了一些关于无缝滚动的教程,但都大同小异,对我这种新手来说也只是会用,不知道什么意思,想要自己写个更是一头雾水.于是找了一些资料,详细说明一下JS无缝滚动的原理,相信看过这篇文章之后,自己写一个滚动效果不会是什么难题了.
    本文以CSS+div+js为例,详细说明无缝滚动实现原理.
    首先建立四个层(div).

结构如下:

id="a"(以下简称a,id="b"简称为b)为轮播的可视部分,b为轮播部分,b_1为轮播内容,但b_2和b_1要在同一行上,因为轮播的原理就是利用scrollLeft不断累加的方式实现,当b_2滚动完的时候,从b_1开始继续滚动。

下面介绍一下代码里(代码可以在网上找,也可以用本文的代码。)的各种参数的意思:
    其实每个代码都大同小易

 <script type="text/javascript" language="javascript">

     var x=document.getElementById("a");
//自定义变量x,getElementById是通过id获取对象。你可以理解为:将document.getElementById("a")
//这段代码缩写为x了。这里的x你可以随便换。在这里不定义x也行不过后面的代码会麻烦点。 var y=document.getElementByIdx_x("b_1");
var z=document.getElementByIdx_x("b_2");
function test() {
//自定义函数test,test可以随便换,值为空。 if (x.scrollLeft>=z.offsetWidth)
//如果,x的scrollLeft值大于等于z的offsetWidth。
//scrollLeft的值也就是scrollbar移动的值,
//offsetWidth是对象可视宽度。也就是z包括边框在内的宽度,因为y和z的宽度是一样的
//所以,你这里可以把z改成y,或者直接改成z的宽度效果是一样的 x.scrollLeft-=y.offsetWidth;
//scrollLeft:代表页面利用滚动条滚动到右侧时,隐藏在滚动条左侧的页面的宽度,x的scrollLeft值等于x的scrollLeft值减去y的offsetWidth值。
//其实当y完全滚动完成的时候,x的scrollLeft值和y的offsetWidth值是相等的。
//所以这段代码意思就是x.scrollLeft=0 。
//这里y.offsetWidth你可以换成z.offserWidth或者y的宽度值,如果换成零,去掉减号。
//看到这里你也许会有点明白了吧?无缝滚动,其实就是不断重复滚动第一个层.
//当b_1滚动的时候,如果没有"双胞胎"的b_2,滚动的时候将显示一个b_1宽的空白 else{
//否则 x.scrollLeft++;
//x的scrollLeft值累加,实现移动 }
} var run = setInterval(test,1);
//自定义run,setInter是在规定的时间内重复调用函数,直到用clearInterval终止
//这句代码的意思是,每1毫秒执行一次test,每隔1毫秒x的scrollLeft值加1
//所以数值越大滚动越慢 x.onmouseover=function() {clearInterval(run)};
//当鼠标划过x的时候,终止run。滚动停止 x.onmouseout=function() {run=setInterval(test,1)};
//当鼠标离开x,继续执行test,时间为1毫秒。 </script>

注:<div class="b_1">和<div class="b_2">要有 "float:left;"属性,宽和高可以根据内容自定。<div id="b">的宽度要大于<div id="a">否则将不能滚动。

js无缝滚动原理及详解[转自刹那芳华]的更多相关文章

  1. JS中的event 对象详解

    JS中的event 对象详解   JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...

  2. js中鼠标滚轮事件详解

    js中鼠标滚轮事件详解   (以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用 ...

  3. amazeui中的js插件有哪些(详解功能)

    amazeui中的js插件有哪些(详解功能) 一.总结 一句话总结: 二.amazeui中的js插件有哪些 1.UI 增强 警告框Alert 按钮交互Button 折叠面板Collapse 下拉组件D ...

  4. MapReduce工作原理图文详解 (炼数成金)

    MapReduce工作原理图文详解 1.Map-Reduce 工作机制剖析图: 1.首先,第一步,我们先编写好我们的map-reduce程序,然后在一个client 节点里面进行提交.(一般来说可以在 ...

  5. 手写JS无缝滚动插件

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  6. ext.js的mvc开发模式详解

    ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...

  7. 微信JS接口汇总及使用详解

    这篇文章主要介绍了微信JS接口汇总及使用详解,十分的全面.详尽,包含分享到朋友圈,分享给朋友,分享到QQ,拍照或从手机相册中选图,识别音频并返回识别结果,使用微信内置地图查看位置等接口,有需要的小伙伴 ...

  8. javascript无缝滚动原理

    相比之下,无缝拼接能避免切换时出现空白,使用户体验更好! 无缝滚动原理: 制作一个双胞胎,内容跟主体内容一致,样式一致,如果横向排列则并排,当切换的时候,就可以弥补主体空白的地方,其他按普通循环操作即 ...

  9. js中中括号,大括号使用详解

    js中中括号,大括号使用详解 一.总结 一句话总结:{ } 是一个对象,[ ] 是一个数组 1.js大括号{}表示什么意思? 对象 { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或 ...

随机推荐

  1. Nginx 代理以及HTTPS (二)

    一.HTTPS解析 https 加密 私钥 公钥 http 的握手 是确认网络是连通的. https 的握手 是一个加密的过程 加密图 二. 使用Nginx 部署HTTPS 服务 1.证书生成命令(h ...

  2. 利用反射实现Servlet公共类的抽取

    一次请求的执行过程: 请求:发送请求地址-->到达web.xml中,找到地址对应的servlet类-->通过反射调用该类的构造函数,创建该servlet类的对象-->通过当前对象调用 ...

  3. Chrome OS 70 发布:这是安卓的私生子吗?

    谷歌于28日正式宣布推出Chrome OS 70.这个最新的Chrome OS系统在一些设计上具备了更多安卓风味,为配备了触摸屏的Chromebook.平板电脑和二合一设备带来了操作界面改善. 据9t ...

  4. Intellij IDEA使用指南(持续更新)(转)

    一.项目层面 1.Java开发工具IntelliJ IDEA导入项目 http://jingyan.baidu.com/article/a17d52852118ac8098c8f2c1.html 2. ...

  5. 怎样借助log4j把日志写入数据库中

            log4j是一个优秀的开源日志记录项目.我们不仅能够对输出的日志的格式自定义,还能够自定义日志输出的目的地,比方:屏幕.文本文件,数据 库,甚至能通过socket输出.本节使用MySQ ...

  6. [Java开发之路](9)对象序列化与反序列化

    1. 对象序列化 当你创建对象时.仅仅要你须要.它会一直存在,可是程序终止时,不管何时它都不会继续存在.虽然这样做是很有意义的,可是在某些情况下.假设程序不执行时扔能存在而且保存其信息,那将对我们很实 ...

  7. android图像处理系列之四-- 给图片添加边框(上)

    图片处理时,有时需要为图片加一些边框,下面介绍一种为图片添加简单边框的方法. 基本思路是:将边框图片裁剪成八张小图片(图片大小最好一致,不然后面处理会很麻烦),分别对应左上角,左边,左下角,下边,右下 ...

  8. POJ 2323 贪心

    题意: 思路: 贪 贪 贪 如果当前的c>之前的c+s 那么之前的合适 一直贪下去就好了 //By SiriusRen #include <cstdio> #include < ...

  9. Logistic Regression and Newton's Method

    Data For this exercise, suppose that a high school has a dataset representing 40 students who were a ...

  10. enable&&builtin---shell内部命令

    用enable命令显示所有激活的内部命令: [root@localhost ~]# enable -a builtin命令用于执行指定的shell内部命令,并返回内部命令的返回值 [root@xiao ...