【问题标题】:How to hide the body scroll bar when showing modal dialog?显示模态对话框时如何隐藏正文滚动条?
【发布时间】:2011-07-14 15:33:21
【问题描述】:

我的主页有很多内容。当我创建任何模式对话框时,正文内容滚动条是可见的,当我们滚动时,它会向下滚动到页面底部。

在对话框中我还必须显示很多内容。所以,如果我可以隐藏 body 滚动条并只显示 modal 的滚动条方式,那将是一个很好的用户体验。

这个想法是,当显示一个模态对话框和一些可滚动的内容时,禁用主页滚动条,只显示当前可见的模态 div 的滚动条。

如何隐藏正文内容滚动条并在模态 div 中显示一个。

我的客户端充满了 JavaScript 和 jQuery。

任何建议都将不胜感激!

【问题讨论】:

  • 我认为您的意思是 modal 对话框... :-)

标签: jquery css


【解决方案1】:

$('body').css('overflow','hidden') 添加到显示模式的函数中,将$('body').css('overflow','scroll') 添加到关闭模式的函数中。

【讨论】:

  • 如果不设置 body 的高度,这在 IE7 中不起作用。不确定其他版本的 IE。
  • $('body').css('overflow', 'inherit') 关闭可能会稍微好一些。
  • 最好是使用$('body').css('overflow', '') :)
【解决方案2】:

当我使用$('body').css('overflow','scroll')$('body').css('overflow', 'inherit') 时,滚动条不是出现在浏览器窗口的右上角,而是出现在页面容器的边缘...

我知道这个问题是因为特定站点的布局和 css 样式,但是在这种情况下更改 html 标签的样式似乎更普遍:

  • $('html').css('overflow','hidden'); - 隐藏滚动条
  • $('html').css('overflow','scroll'); - 显示滚动条

【讨论】:

    【解决方案3】:

    如果您使用overflow: hidden 将所有正文内容包装在一个包装器 div 中,您可以在打开模式对话框时将该 div 的高度动态设置为视口高度。

    【讨论】:

      【解决方案4】:

      您可以将其添加到 bootstrap.js 中

      行:421

        this.$element.hide(), this.backdrop(function() {
        a.$body.removeClass("modal-open"),$('html').css('overflow','scroll'), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger("hidden.bs.modal")
      })
      

      线:397

      this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), $('html').css('overflow','hidden'), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function()

      【讨论】:

      • 随着代码的变化,行号将不再有用。我认为,有一点上下文(之前/之后的行)会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      相关资源
      最近更新 更多