回到頂部

經(jīng)過百度與stackoverflow
4年前還有很多quirks模式的時(shí)候 原因是這樣的

Firefox & IE 支持對html的scroll 部分webkit 支持 body 的scroll ( 360 極速模式實(shí)驗(yàn)成功 )
而在老的瀏覽器中, 打開一個(gè)空白頁面,觀察瀏覽器右側(cè),會(huì)發(fā)現(xiàn)IE瀏覽器會(huì)有一段滾動(dòng)條,而Firefox瀏覽器下沒有
直至body scrollTop 被廢棄, 詳見w3c標(biāo)準(zhǔn)

scrollTop ( 距頂部滾動(dòng)距離 ) 是有滾動(dòng)條的html ( 或其他元素 ) 才有的

body is not potentially scrollable 不可能滾動(dòng)
當(dāng)然, 可以動(dòng)手給body 加個(gè) overflow: scroll , 或者給html 加個(gè) hidden

所以 回到頂部中 animate 對 body 進(jìn)行 scrollTop屬性, 自然不行

在jquery的github和官網(wǎng)上, 也有類似的issue
$( "html, body" ) 的兼容性寫法還是很好的

唯一的缺點(diǎn)是會(huì)造成兩次回調(diào)
$( "html, body" ).animate({scrollTop:0}, 500, function() { 
   alert("Finished animating"); // 彈出兩次
});

但是可以用promise來解決這個(gè)問題

$( "html, body" ).animate({ scrollTop: 0 }, 100)
  .promise().then(function() {
    console.log("runs once!")
  });

當(dāng)然如果不要?jiǎng)赢嬓Ч透唵瘟? 原生或者jquery 都可以

$( document ).scrollTop( 500 );
window.scrollTo(0,0) 
document.body.scrollTop = document.documentElement.scrollTop = 0;
document.body.scrollIntoView();

最后配個(gè)實(shí)驗(yàn)圖

body scrollTop 始終為0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容