效果:
需求:
1.記錄循環滾動;
2.每組記錄之間不能有留白;
3.每條記錄上移到容器的頂部時要停頓一下;
4.滑鼠移入容器時停止滾動,移出時繼續滾動。
曾想用的實作方法:
1.使用marquee:本來想用marquee搞定,使用十分友善,但不滿足需求2,3,加上隻能用于ie浏覽器。。。。。。。。
2.使用jquery:我沒有學過jquery,隻是簡單調用同僚的方法,但發現居然出現文法錯誤,同僚也隻是從網上拷過來不懂得哪裡出錯。。。。。。
于是隻好硬着頭皮自己寫一個吧!
我的思路是:當最頂的記錄完全移出容器時,把該記錄移動到所有記錄的底部
(圖很醜但很溫柔^_^)
下面是實作:(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)。
當容器的position設定為relative時子元素的offsettop才是子元素離容器上邊框的距離,否則為子元素離浏覽器工作區上邊框的距離。
(2)offsettop為隻讀屬性,值為純數字;style.top為可讀可寫屬性,值如12px這樣的字元串。
因為offsettop為隻讀,最終控制元素位置要用style.top,而兩者表達的含義又有所差別,是以這裡我直接用style.top來擷取定位和設定定位。
2.因為要将頭元素移動到其他兄弟元素的後面,這個移動過程會使其他兄弟元素的定位發生變化,均向上移動了頭元素高度的距離,是以要為各個兄弟元素的style.top加上頭元素的高度。