Jquery 如何在显示模式对话框时隐藏主体滚动条?

Jquery 如何在显示模式对话框时隐藏主体滚动条?,jquery,css,Jquery,Css,我的主页有很多内容。当我创建任何模式对话框时,主体内容滚动条可见,当我们滚动时,它向下滚动到页面底部 在对话框中,我还必须显示很多内容。所以,如果我可以隐藏body滚动条,只显示modal的滚动条,这将是一个很好的用户体验 其思想是,当显示一个模式对话框和它上面的一些可滚动内容时,禁用主页滚动条,只显示当前可见模式div的滚动条 要隐藏body内容滚动条并在modal div中显示它,我需要做什么 我的客户端充满了JavaScript和jQuery 任何建议都将不胜感激 如果使用溢出:隐藏将所有

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

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

其思想是,当显示一个模式对话框和它上面的一些可滚动内容时,禁用主页滚动条,只显示当前可见模式div的滚动条

要隐藏body内容滚动条并在modal div中显示它,我需要做什么

我的客户端充满了JavaScript和jQuery


任何建议都将不胜感激

如果使用
溢出:隐藏
将所有正文内容包装在包装div中,则可以在打开模式对话框时动态设置该div的高度等于视口高度。

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

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

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

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

您可以将其添加到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(“模态打开”),this.escape(),this.resize(),$('html').css('overflow','hidden'),this.$element.on(“click.dismisse.bs.modal”,“data dismisse=”modal“),a.proxy(this.hide,this)),这个.background(function()

我想你指的是一个模态对话框…:-)如果不设置主体的高度,这在IE7中是不起作用的。不确定IE的其他版本。
$('body')。css('overflow','inherit')
在关闭时可能会稍微好一点。最好是使用
$('body')。css('overflow',','')
:)随着代码的更改,行号将不再有用。我认为,有一点背景知识(前后几行)会更有帮助。