【发布时间】:2012-03-02 02:40:12
【问题描述】:
我有一个以 y 重复背景图像居中放置的包装器:
<body>
<div id="wrapper">
...some content
</div>
</body>
#wrapper{
width: 900px;
margin: 0 auto 0 auto;
background-image: url(image.jpg) 250px 0px repeat-y;
}
问题:当窗口大小高于从其内容继承的包装器高度时,图像显然不会在 y 轴上一直重复到窗口底部。
我已经使用 jQuery 根据实际文档高度动态地将内联 CSS 样式应用于包装器(当 DOM 准备好并且在窗口调整大小事件时):
$(function(){
$('#wrapper').css({'height':($(document).height())+'px'});
$(window).resize(function(){
$('#wrapper').css({'height':($(document).height())+'px'});
});
});
这种方法的问题在于,每次将窗口高度扩展为大于之前调整大小的最大尺寸时,文档高度都会扩展此差异,如果您不断调整窗口大小并且拥有无限的垂直显示空间。
在典型的 30" 英寸显示器上,高度为 1600px,当用户打开窗口高度为 1000px 且包装器高度为 800px 的网站时,上面的 jQuery 将高度设置为 1000px 以正确平铺背景图像。此时,一旦用户将窗口大小扩展到例如 1400px,1400px 是一个新的文档大小“记住的默认值”,即使用户将窗口大小调整回原来的 1000px 高度,也不会自行更新,将 400px 添加到滚动条高度 在底部。
如何解决这个问题?
更新:(window).height 似乎不起作用,因为窗口高度是视口高度。当您的视口小于内容并且您滚动它时,包装器始终保持视口的大小并且不会延伸到当前视口位置的底部。
【问题讨论】:
-
把背景图片放在一个单独的类中。然后在调整大小后或在调整大小期间删除并重新添加该类?
-
尝试使用
$(window).height()而不是$(document).height() -
$(window).height() 不正确,例如如果你的窗口大小只有 200px 高,那么 DIV 也会保持 200px 高。当您滚动时,repeat-y 背景会在 200 像素的阈值处停止,而实际内容要长得多。