javascript - 根据窗口高度 Bootstrap 模态高度

标签 javascript jquery html css twitter-bootstrap

我正在尝试使模态高度与窗口高度相同。模式的高度然后是动态的,扩展以适本地适应内容,高达窗口高度的 90%。还想在屏幕顶部留出一些空间来显示标题。

这是我写的:

 $(document).ready(function(){
    $('.modal').on('shown.bs.modal', function (e) {
        var modalObj = $(this).find('.modal-content');                                        
        if ($(modalObj).height() > ($(window).height()*0.8)) {
            $(modalObj).height($(window).height()*0.8);
        }                                         
    });
 })

问题是当我将设备从纵向切换到横向或从纵向切换到横向时,在第一次尝试时,模态会获取先前模式的高度。

假设我在肖像模式下打开模式,它显示 430 像素的高度。然后我关闭模态我将设备切换到横向并打开模态,它显示 430 像素(纵向模式下的高度)但是如果我再次打开模态,它会得到正确的高度。

我想当我关闭模态时,高度没有被删除。每次关闭模式或调整窗口大小时,我都必须写一些清除高度的东西。

还试过:

var callback = function () {

  $('.modal').on('shown.bs.modal', function (e) {
        var modalObj = $(this).find('.modal-content');                                      
        if ($(modalObj).height() > ($(window).height()*0.9)) {
            $(modalObj).height($(window).height()*0.9);
        }                                         
    });
};

$(document).ready(callback);
$(window).resize(callback);

最佳答案

如果你想让模态占据视口(viewport)高度的 90%,你不需要任何 JS。 CSS 有一个特殊的单元,称为 vh100vh 是视口(viewport)的 100%。

在您的情况下,您只需要:

.modal {
  height: 90vh;
}

如有必要,您也可以将其更改为 max-height

关于javascript - 根据窗口高度 Bootstrap 模态高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33184157/

相关文章:

javascript - e.preventDefault() 阻止默认行为,但不返回 false。为什么?

javascript - React-Redux Store 没有被 reducer 正确更改

javascript - 如何检测页面底部?手机上的问题

javascript - ASP.net MVC/Knockout JS 映射 - 无法更新 ViewModel

javascript - 如何解决同位素中的追加设计问题?

jquery - 如何绑定(bind)到仅检查复选框?

javascript - 按字母顺序对一行中的数字进行排序

html - 在 HTML 图像上水平和垂直居中文本(绝对定位)

html - CSS:设置 background-size: cover 属性以覆盖 div 而不是整个屏幕

html - 如何只修改类的一个特定实例?