天天看点

javascript实例:逐条记录停顿的走马灯

效果:

javascript实例:逐条记录停顿的走马灯

需求:

1.记录循环滚动;

2.每组记录之间不能有留白;

3.每条记录上移到容器的顶部时要停顿一下;

4.鼠标移入容器时停止滚动,移出时继续滚动。

曾想用的实现方法:

1.使用marquee:本来想用marquee搞定,使用十分方便,但不满足需求2,3,加上只能用于ie浏览器。。。。。。。。

2.使用jquery:我没有学过jquery,只是简单调用同事的方法,但发现居然出现语法错误,同事也只是从网上拷过来不懂得哪里出错。。。。。。

于是只好硬着头皮自己写一个吧!

我的思路是:当最顶的记录完全移出容器时,把该记录移动到所有记录的底部

javascript实例:逐条记录停顿的走马灯

(图很丑但很温柔^_^)

下面是实现:(ie6、7、8,chrome都ok!)

css文件

html:

注意:每条记录的div必须在内嵌的style中设定top为0,否则在js中获取的是空字符串。

js:

注意点:

1.offsettop和style.top的区别:

(1)offsettop指的是元素上外边框离父容器上外边框的y轴距离(单位px);style.top指的是元素上外边框离自己原来位置上外边框的y轴距离(单位px)。

javascript实例:逐条记录停顿的走马灯

当容器的position设置为relative时子元素的offsettop才是子元素离容器上边框的距离,否则为子元素离浏览器工作区上边框的距离。

(2)offsettop为只读属性,值为纯数字;style.top为可读可写属性,值如12px这样的字符串。

因为offsettop为只读,最终控制元素位置要用style.top,而两者表达的含义又有所区别,所以这里我直接用style.top来获取定位和设置定位。

2.因为要将头元素移动到其他兄弟元素的后面,这个移动过程会使其他兄弟元素的定位发生变化,均向上移动了头元素高度的距离,所以要为各个兄弟元素的style.top加上头元素的高度。

继续阅读