堆叠模式在关闭时滚动主页[重复]

Posted

技术标签:

【中文标题】堆叠模式在关闭时滚动主页[重复]【英文标题】:Stacking modals scrolls the main page when one is closed [duplicate] 【发布时间】:2015-02-06 22:19:50 【问题描述】:

使用 Bootstrap 3.3.1,我能够在没有任何额外脚本的情况下获得堆叠模式(如在 Bootstrap 站点中复制粘贴模式模板并将其中的许多模板放在同一页面中)。问题是每当顶部(最高)模态关闭时,滚动焦点会转到主页(在所有剩余模态下),并且只有在打开新模态时才会返回顶部模态。有没有办法将滚动焦点设置到下一个模式而不是主页?

当我通过向body 和单个modals(通过Firefox 的“编辑为html”来测试滚动)添加文本来测试解决方案here(甚至this one)时,它具有我需要。

当我尝试使用最新的 jQuery 和 Bootstrap 时出现的一个问题是 modal-backdrop 然后显示在 modal-dialog 上方。 检查元素 每当一个或多个模态出现时,我注意到modal-backdropdiv 出现在modal 的主要div 中:

<div id="myModal" class="modal fade" aria-hidden="true" style="display: none;">
  <div class="modal-backdrop fade in"></div>
  <div class="modal-dialog modal-lg"></div>
</div>

body 的底部相比,它就像here。当我在该链接示例上使用 3.3.1 时,甚至会发生这种情况。我认为这导致主要的divmodal-backdrop 具有修改后的z-index,但不是modal-dialog,所以我尝试通过添加一行将modal-dialog 设置为具有其父级的@987654340 来修复它@ plus 1. 它把背景放在适当的位置,但滚动问题仍然存在。这是因为 3.3.1 的变化还是我看错了解决方案?

【问题讨论】:

看来您只需将data-backdrop="false" 添加到您的嵌套模式中,请参阅:jsfiddle.net/u038t9L0 背景不是问题(在问题的最后一段中修复了该问题)。如果顶部关闭,则无法滚动显示的模态。添加您必须在正文中滚动浏览的长内容以及 jsfiddle 中的每个模式。打开每个模态,你会发现你可以上下滚动。关闭一个,您会注意到模态框仍然不滚动,但正文中的内容(不在任何模态框中)会滚动。 【参考方案1】:

背景不是问题。如果顶部关闭,则无法滚动显示的模式。

您应该添加以下 javascript

$('.modal').on('hidden.bs.modal', function (e) 
    if($('.modal').hasClass('in')) 
    $('body').addClass('modal-open');
        
);

演示:http://jsfiddle.net/u038t9L0/1/

当正文具有 modal-open 类时,将为您的 .modals 应用以​​下 CSS:

.modal-open .modal 
  overflow-x: hidden;
  overflow-y: auto;

关闭模式也会从模式中删除modal-open 类。

【讨论】:

使用角度,模态在身体上出现动态。因此,需要将选择器更改为$('body').on('hidden.bs.modal', '.modal', function (e) 。这将适用于模板内的模态 对于 Bootstrap 4,请改用第二行 if($('.modal').hasClass('show'))

以上是关于堆叠模式在关闭时滚动主页[重复]的主要内容,如果未能解决你的问题,请参考以下文章

加载时隐藏滚动条[已关闭且未解决] [重复]

检测应用程序处于显示模式(双击主页按钮)[重复]

Flexbox在垂直堆叠的盒子上保持相等的高度[重复]

在“关闭”状态下使用滚动视图启动时遇到问题

在窗口外单击时自动关闭模态,但如果在模态窗口内单击则保持打开状态[重复]

退出应用程序后隐藏 UI [重复]