2012-07-31 72 views
3

如果您已经创建了每个动态页面,您可能会注意到,如果您始终使用不需要滚动条的页面高度,然后动态添加内容,则会出现滚动条。当它这样做时,它会将我的所有内容“推”到滚动条的左侧,看起来页面上的所有内容都会跳转一点。是否有可能使滚动条位置:绝对?

是否有可能使滚动条像绝对位置一样操作,以便不会将我的内容全部推送到左侧,而只是覆盖内容。我不喜欢内容全部“跳”到左边的方式;它看起来很讨厌。

谢谢

+0

您可以使用'window.resize'事件处理程序通过比较'document'和'window'的高度来检测何时需要滚动条,根据需要在主体中添加或删除一些右边距,但这是一个JavaScript的解决方案,并在实践中有点混乱 – jackwanders 2012-07-31 20:28:41

回答

1

你可以,但它不会是完美的。从this后复制代码:

// Used like $('#my-id').hasScrollbar(); 

jQuery.fn.hasScrollbar = function() { 
var scrollHeight = this.get(0).scrollHeight; 

//safari's scrollHeight includes padding 
if ($.browser.safari) 
    scrollHeight -= parseInt(this.css('padding-top')) + parseInt(this.css('padding-bottom')); 

if (this.height() < scrollHeight) 
    return true; 
else 
    return false; 
} 

可以查询,看是否滚动条是存在的。在此之前,然而,你将有一个全局变量,那就是视口的宽度之前出现的滚动条:

var viewportWidth = $(window).width(); 

并运行上述功能后,你可以使用的新视口宽度比较这viewportWidth用滚动条的窗口,和margin-rightbody的负数的差异。

+0

我其实想到最初这样做,但如果可能的话想要一个CSS解决方案。看起来像没有可用的,所以我可能会使用你的方法。谢谢 – 2012-07-31 20:19:47

0

你问的问题无法做到。

你可以然而,迫使它出现在任何时候都:

#id { 
    overflow: scroll; 
} 

但是,这是可怕的丑陋。