做頁(yè)面時(shí)需要判斷頁(yè)面滾動(dòng)距離讓列表對(duì)應(yīng)文字變色哄尔,之前直接用document.body.scrollTop
獲取滾動(dòng)距離柠并,結(jié)果打開(kāi)火狐發(fā)現(xiàn)不可以,獲取不到
原生接口測(cè)試
document.documentElement
即 <html>
元素臼予,而 document.body
即 <body>
元素粘拾。
測(cè)試結(jié)果窄锅,在火狐上只能通過(guò)html
元素來(lái)獲取和設(shè)定頁(yè)面滾動(dòng)高度入偷,而在谷歌上反之只能用body
元素來(lái)獲取和設(shè)定
jquery接口測(cè)試
采用 $(document)
可以實(shí)現(xiàn)對(duì)獲取和設(shè)定scrollTop
的兼容
scrollTop動(dòng)畫(huà)實(shí)現(xiàn)測(cè)試
雖然實(shí)現(xiàn)了兼容,但為了有更好的效果,希望采用動(dòng)畫(huà)的方式滾動(dòng)到頁(yè)面的某位置锋爪,而不是直接跳轉(zhuǎn),這里采用jquery
的 animate
函數(shù)來(lái)實(shí)現(xiàn)亏镰。
發(fā)現(xiàn)雖然可以采用$(document)
來(lái)實(shí)現(xiàn)獲取和設(shè)定拯爽,但動(dòng)畫(huà)效果都無(wú)法使用某抓,還是只能用body
元素和html
元素來(lái)實(shí)現(xiàn)。
最終解決
- 獲取或直接設(shè)定當(dāng)前頁(yè)面滾動(dòng)高度:
$(document).scrollTop();//獲取汉矿,兼容火狐谷歌
- 有動(dòng)畫(huà)效果的設(shè)定當(dāng)前頁(yè)面滾動(dòng)高度:
$("body,html").animate({ scrollTop: ... });//動(dòng)畫(huà)滾動(dòng)效果备禀,兼容火狐谷歌
如果想完美兼容各大瀏覽器的scrolltop
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
ie8曲尸、7赋续、6 兼容scroll事件
$(window).bind("scroll",function(){ //…… });