【问题标题】:Disable scrolling but keep scrollbar CSS禁用滚动但保留滚动条 CSS
【发布时间】:2015-05-31 16:54:31
【问题描述】:

我找不到解决方案,这里有一个问题,但答案不是很有用(至少对我来说)。

我有一个 JavaScript 模式弹出窗口,它通过在页面上放置透明 div 来禁用背景上的所有内容。它还通过将溢出设置为隐藏来禁用滚动,并且必须这样做,因为页面可以用鼠标滚轮滚动,否则会分散用户的注意力。

问题是,当隐藏和显示滚动条时,页面会调整大小并且效果很难看。此外,我的页面的设计方式是,如果我阻止它调整大小,那也会很丑陋。

我想要的是禁用滚动条,但让它保持可见(页面内容长于屏幕大小)。这在 CSS 中是否可行?

【问题讨论】:

  • 请显示一些代码
  • 究竟是为了什么?我的意思是真的,对于哪一部分?整个代码比较复杂,JS动态添加元素。
  • 我不知道这个页面是如何工作的以及你是如何做到的。你怎么能指望我知道问题出在哪里或在哪里以及是否可以在 CSS 中解决它?

标签: javascript html css


【解决方案1】:

不要更改css,这将删除scrollbar,正如您所说,更改页面布局,请尝试调用jquery function

// call your pop up and inside that function add below
$('body').on('scroll mousewheel touchmove', function(e) {
      e.preventDefault();
      e.stopPropagation();
      return false;
});

然后当您关闭模式时,调用相同的函数,但将 on 替换为 off

【讨论】:

  • 是的,在应该有的时候也没有简单的 CSS 解决方案,也没有理由。谢谢,会用JS/jQuery
  • 好主意,但它也会阻止弹出窗口内的任何滚动。
  • 顺便说一句,之后用户仍然可以通过鼠标拖动滚动条来滚动内容。
【解决方案2】:

一旦你开始显示你的弹出窗口,给body 一个类(比如popupOpen)。这应该是一个简单的解决方法。

.popupOpen {
    overflow: hidden;
    margin-right: 17px //size of the scrollbar in each browser
}

当您关闭弹出窗口时,只需从 body 中删除该类。

【讨论】:

  • 很高兴知道滚动条,但我做不到。如果页面以更高的分辨率浏览,则不会有滚动条,所以这会搞砸。另外,我的页面,嗯,我重新创建了一些与这个免费模板非常相似的东西:wix.com/website-template/view/html/… 简单地调整大小或留出更多边距是非常明显的,我的边距比这个模板上的要少......
  • 所有设备上的所有浏览器上的所有scrollbars 宽度都相同吗?
  • 滚动条宽度在所有浏览器上并不相同。
  • 如果没有,你可以使用.css() 和这个脚本:stackoverflow.com/questions/8079187/…
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2011-10-22
  • 2016-10-03
  • 2015-02-21
  • 1970-01-01
  • 2011-11-12
  • 2017-08-28
相关资源
最近更新 更多