2011-07-22 208 views
1

我有滚动页面链接打开thickbox。如何隐藏滚动(溢出:隐藏)?

(见例如landme.ru/scroll-bug/

我想ThickBox的打开时隐藏垂直滚动,并留在页面的底部。 将'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'); 
} 

它的工作原理,但我还是想知道,如果有任何其他的方法

+1

我明白你想要什么,但这对用户来说真的很烦人。我想你可能会问我为什么要告诉用户他们不能或可以滚动。我当然不希望我的滚动条消失。 –

+0

我的密箱中有很多内容,我需要在thickbox内滚动,而不是滚动所有页面。 –

+0

商业逻辑不是这里的问题...没有真正的理由说明为什么我们需要知道海报为什么要这样做:P –

回答

0

确定,所以这个问题是高度。你不能只是指定隐藏在包装上的溢出,因为它不知道在哪里停止。用位置的style属性将div包裹在div中; relative;高度:100%;然后给包装的溢出风格:隐藏;身高:100%;位置:绝对;

最后你需要所以它的底部滚动它。

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

和你有它:)

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

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

编辑:updateed代码...我们可以测试这个,看看它的工作原理首先...你可以把这个在你的锚元素?

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;})();" 
+0

这隐藏了页面上的所有内容(请参阅演示)。 此外,页面不应该简单地移动。 它不一定是页面底部,链接可以在页面的中间例如 –

+0

确定...发现我的错误....看到我的编辑 –

+0

上面的代码的行为奇怪。 执行后重新加载页面。 同时我用这样的代码: CSS: '.noscroll {溢出:隐藏;}' JS: '如果(($ .browser。msie)&&($ .browser.version =='7.0')){('html')。addClass('noscroll'); } else { $('body')。addClass('noscroll'); }' 它的工作原理,但我仍然想知道,如果有任何其他方法 –