[英]How do I prevent scrolling the window/body “through” a modal div?
這是我的布局的簡化版本:
<body>
[... a bunch of content ...]
<div id="modal-overlay">
</div>
</body>
body
包含足以使整個頁面滾動的內容。
#modal-overlay
的樣式如下:
#modal-overlay {
display: none;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
為了響應用戶的操作,我將通過設置display: block;
顯示#modal-overlay
display: block;
然后, #modal-overlay
會填滿整個視口。
麻煩了...
有時,當您在#modal-overlay
上垂直滑動時,其內容將按原樣滾動。
但是, 有時, body
滾動,而#modal-overlay
中的內容根本不會滾動。 就好像我滾動body
通過 #modal-overlay
,而這正是我不想要什么。
實際上- #modal-overlay
或body
響應滑動手勢而滾動似乎是完全隨機的。
我已經讀過一些技巧(例如,將overflow:hidden
到body
但我不想這樣做,因為它失去正確的滾動位置,並且還會導致其他問題。)我也想擁有適用於任意數量的嵌套層的解決方案。 我真的試圖阻止通過最上層滾動,不與底層擺弄。
這在iOS上尤其成問題,因為滾動body
會降低瀏覽器鑲邊的高度,從而擴大視口,從而使#modal-overlay
的布局混亂,因為它的大小可以填充視口。 Aaargh。
在此先感謝您的任何建議或指導!
我還沒有嘗試在ios上實現這一目標,但是如果您要處理多層並阻止其他層的滾動,那么至少可以嘗試使用slimscroll jquery插件 。 希望能幫助到你
Body
應overflow-hidden
並動態添加position: absolute; width: 100%; height: 100%
position: absolute; width: 100%; height: 100%
position: absolute; width: 100%; height: 100%
模式打開時,正文中其他內容包裝器(主體內部的內容容器)的position: absolute; width: 100%; height: 100%
CSS屬性。
打開模態時
<style>
.modal-open {
overflow: hidden;
}
.modal-open .container {
position: absolute;
width: 100%;
height: 100%;
}
</style>
<body class="modal-open">
<section class="container">
Site content will be here
</section>
<div class="modal">
Modal content will be here
</div>
</body>
在打開模態時動態添加此“ modal-open
”類,並在關閉時將其刪除。
由於您的modal-overlay
覆蓋了100%的主體,因此我相信在顯示#modal-overlay
時將position:fixed
添加到body
可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.