默认情况下,引导模式设置为display: block;
。我如何将其更改为display: flex;
?如果可能,我希望避免添加JavaScript来修复此问题。
这段代码使它成为模态的display:flex
,但它总是可见的。我假设这是因为引导程序默认使它成为display:hidden
。
#HelpModal {
display: flex;
justify-content: center;
align-items: center;
}
这是我的模态,$RenderedAdminHelpModal
在这里没有引起问题。我使用SilverStripe来呈现这个模态的内容。
<button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#HelpModal">Tutorial</button>
<div id="HelpModal" class="d-flex p-2 modal" role="dialog">
<div class="modal-dialog">
$RenderedAdminHelpModal
</div>
</div>
1条答案
按热度按时间zkure5ic1#
您问题的简短答案是:* “您不更改Bootstrap 3模态的显示属性”。
查看您的代码,我猜您希望更改其
display
属性的原因是因为您希望将其垂直居中。垂直居中Bootstrap 3模态并不像看起来那么容易,至少有两个原因:
首先也是最重要的,Bootstrap在显示/隐藏
display
属性时会动态更改它的属性。然后你就有了一个不同的,甚至更微妙的问题。把一个高个子放在一个矮个子的父对象中,用
flex
,会使子对象的顶部和底部超出父对象。当父对象的大小是视口的大小时,你最终不能滚动到子对象的开始。简而言之,当模态页面容纳的内容超过了 windows 的高度时,你就不能再滚动到它的顶部了,这是一个巨大的可访问性问题。
Bootstrap 3模态的一个不错的解决方案是限制模态的高度(确保它永远*不高于视口),并在需要时在模态的主体上放置一个滚动条。
具体操作如下:
查看其工作情况:
第一次
为什么要包含在
min-height
媒体查询中?因为它在高度低于200px
的视口中渲染效果不佳(由于元素高度有限,.modal-body
内容变得难以访问)。但是我们并不希望这些屏幕垂直居中,不是吗?主要的问题是可访问性。如果我们不干涉的话,Bootstrap 3提供了它。