天天看點

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加上頭元素的高度。

繼續閱讀