解決模擬彈出框情況下文檔滾動的問題

用div元素來模擬彈出框很普遍,它可以自行定製各式各樣的彈出框。彈出框一般用的是fixed絕對定位,也就是相對於瀏覽器窗口定位。

在文檔高度大於窗口高度的情況下,彈出框會存在一個問題。當彈出框在顯示的時候,滾動鼠標(PC端)或滑動頁面(移動端)會導致文檔滾動。還有在彈出框的高度也大於窗口高度時,滾動鼠標或滑動頁面會先滾動彈出框,直到滾動條到頭或到尾時,繼續滾動彈出框仍然會導致文檔的滾動。

這個問題會導致用戶在隱藏彈出框返回時,頁面顯示不是顯示彈出框前的位置。解決辦法是給這個文檔動態設置overflow屬性,當顯示彈出框時,把文檔的overflow屬性設置爲hidden,而隱藏彈出框時,則把文檔的overflow屬性恢復。

當然,假如你的頁面文檔本身overflow屬性爲hidden,那就不存在滾動的問題。

這裏爲了方便直接,我只用JavaScript進行演示,最好的方式是通過更改class屬性來完成。

JavaScript

// 顯示彈出框時
document.documentElement.style.overflowY = 'hidden';

// 隱藏彈出框時
document.documentElement.style.overflowY = 'auto';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章