分类: 系统运维
2012-10-08 16:56:30
JS图片无缝滚动就是html中内容超出出现下拉框自动拖拉下拉框版本。不知道该怎么怎么描述。
刚听完孙老师讲之后,感觉不是很难,但是真正让自己写的时候感觉会有好多问题,发现里面的很多东西没有讲出来,嘿嘿……跟李老师差距还是有点大哦!!
中午吃完饭回来之后,自己认真的想想,并动手实验了一下,终于明白那几条简短代码的含义了。实现图片无缝滚动的思想:当滚动条到终点的时候让它自动回到起点再次拖动它到终点。如何实现这个方法就要加一条IF语句做出判断。只要滚动的距离scrollLeft大于显示框的距离就让滚动的距离scrollLeft自动清0,否则就scrollLeft++。代码如下:
点击(此处)折叠或打开
说几个比较难理解的地方吧:
1.为什么子标签要是父标签的两倍以上的宽度:
当子标签的宽度小于父标签的宽度的两倍以上,就会使demo.scrollLeft到某一个小于demo.offsetWidth数值停止不动了。假设子标签的宽度是1000,当demo.scrollLeft为452的时候,demo.scrollLeft+显示的宽度552+边框的宽度=1000,所以demo.scrollLeft无法++了,但这个时候demo.offsetWidth<=demo.scrollLeft不成立,所以demo.scrollLeft无法清0.所以要是它的两倍以上
2.为什么要3div嵌套:如果两个div嵌套会出现一片空白区域,然后直接从第一个开始再次循环,不能第一个出去最后一个变为第一个了,这是因为demo1的宽度是1200,但是outer的宽度却才是550,所以它要一直循环到1100左右才会清0,这个时候三层嵌套就相当于第三层的内容demo1和demo2(demo1和demo2完全的一样)平铺在第二层上。
3.demo.offsetWidth相当于你需要让它滚动的宽度,而demo.scrollLeft相当于是你实际让它滚动的距离,这就好比汽车里程表,demo.offsetWidth只能跑的里程表,而demo.scrollLeft是你现在已经跑了的里程数
scrollLeft 和 scrollTop 对应滚动条的位置 无缝滚动.rar