【问题标题】:Fix scroll position in place when setting body to position:fixed (ios)将正文设置为位置时修复滚动位置:固定(ios)
【发布时间】:2015-10-09 23:00:40
【问题描述】:

好的,所以我有一个带有按钮的页面,该按钮使用 jQuery 激活覆盖。为了防止覆盖层后面的内容在 iPhone 等设备上滚动,我使用以下代码将“body”类切换为设置为 position: fixed, overlay: hidden。

<script>
$(document).ready(function(){
    $("#filter-btn, .close-filter").click(function(){
        $("body").toggleClass("fix");
    });
});
</script>

这可行,除了当单击按钮激活覆盖时,页面返回到顶部,这不是我想要的 - 我希望保留当前滚动位置。

我猜我需要在这里使用一些 JS 来获取滚动位置并将其修复到位,然后在覆盖层关闭时禁用它。问题是,我不确定如何。

有什么想法吗?

【问题讨论】:

    标签: jquery ios scroll webkit fixed


    【解决方案1】:

    主体会“滚动”到顶部,因为它被固定在顶部。

    试试:

    $('html, body').css({'overflow': $('html, body').css('overflow')=='hidden'?'auto':'hidden'});
    

    【讨论】:

    • 我已经尝试将 html 和 body 都设置为溢出隐藏而不“修复”它们中的任何一个(看起来你的代码正在这样做),但问题仍然存在。一旦溢出设置为隐藏页面只想显示顶部。
    • 尝试删除$("body").toggleClass("fix"); 并用我提供的代码替换它。
    猜你喜欢
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多