【问题标题】:how to hide scroll (overflow:hidden)?如何隐藏滚动(溢出:隐藏)?
【发布时间】:2011-07-22 17:52:46
【问题描述】:

我有一个可滚动的页面,带有打开厚框的链接。

(参见示例landme.ru/scroll-bug/)

我想在打开厚框时隐藏垂直滚动并停留在页面底部。 将 'overflow:hidden' 属性应用于 'body' 标签不会 在ie7工作。如果我将此属性用于“html”标签,则页面内容为 在滚动之前向上滚动将被隐藏

对不起我的英语

UPD:同时我使用这样的代码:

css:
.noscroll{overflow:hidden;}

js:

if ( ($.browser.msie) && ($.browser.version == '7.0')) {  
   $('html').addClass('noscroll');  
} else {  
   $('body').addClass('noscroll');  
}  

有效,但我还是想知道,有没有其他方法

【问题讨论】:

  • 我知道你想要什么,但这对用户来说真的很烦人。我想你可能会问我为什么要告诉用户他们不能或可以滚动。我当然不希望我的滚动条消失。
  • 我的thickbox 中有很多内容,我需要在thickbox 内滚动而不是滚动所有页面。
  • 业务逻辑不是这里的问题......我们没有真正的理由需要知道发布者为什么要这样做:P
  • @Amir Raminfar, the new york times 添加覆盖并移除滚动条,以防止您在每月达到一定限制后阅读文章。这很有趣,因为他们不停地发送文章的数据,所以仍然可以免费阅读。

标签: javascript jquery html css scroll


【解决方案1】:

好的,问题出在高度上。您不能只指定在包装上隐藏的溢出,因为它不知道在哪里停止。用 position:relative 的样式属性将“wrap”包裹在一个 div 中;高度:100%;然后给包装样式溢出:隐藏;高度:100%;位置:绝对;

最后你需要滚动它,让它在底部。

document.getElementsByClassName("wrap")[0].scrollTop = document.getElementsByClassName("wrap")[0].scrollHeight

你有它:)

这里的测试用例: http://jsbin.com/eguhuj#html

有一点滚动条,但那是因为 jsbin。在一个 html 文档中,它看起来很完美。

编辑:更新的代码...我们可以先测试一下它是否可以工作...您可以将它放入您的锚元素中吗?

onclick="(function(){var blah = document.getElementsByClassName("wrap")[0];
document.getElementsByClassName("wr")[0].style.position = "absolute";
var meh = document.body.scrollTop;
blah.style.overflow = "hidden";
blah.style.height = "100%";
blah.style.position = "absolute";
blah.scrollTop = meh;})();"

【讨论】:

  • 这会隐藏页面上的所有内容(参见演示)。页面也不应该简单地移动。它不一定是页面底部,例如链接可以在页面中间
  • 上面的代码表现得很奇怪。它在执行后重新加载页面。同时我使用这样的代码: css:.noscroll{overflow:hidden;} js:if ( ($.browser.msie) && ($.browser.version == '7.0')) { $('html').addClass('noscroll'); } else { $('body').addClass('noscroll'); } 可以,但是我还是想知道,是否有其他方法
猜你喜欢
  • 2014-04-23
  • 1970-01-01
  • 2017-03-08
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多