【发布时间】:2014-04-01 19:34:18
【问题描述】:
我正在尝试定位背景图像,使其与现有的渐变背景对齐,该背景相对于 <html> 元素定位(即渐变图像出现在浏览器宽度的 92% 处,无论如何你调整窗口的大小)。
我将图像放在<div> 中,将图像相对于<div> 定位,并将<div> 相对于浏览器窗口定位。
例如。
<body>
<div id="background-position-container">
<img src="images/bubbles.png" id="background-corner-decoration" />
</div>
</body>
与:
<style>
#background-position-container {
position: absolute;
width: 0px;
height: 0px;
top: 180px;
left: 92%;
}
#background-corner-decoration {
position: relative;
/* tweak the position of the image so it lines up with the gradient */
top: -176px;
left: -118px;
width: 216px;
height: 477px;
margin: 0px -118px -176px 0px;
}
</style>
这看起来效果不错,但是如果你水平缩小浏览器窗口,背景图片会导致<body>元素超出<html>元素,并出现滚动条。
我似乎可以通过创建<body> 的新同级元素并将<div> 放入其中来解决此问题:
<div id="background-page-container">
<div id="background-position-container">
<img src="images/bubbles.png" id="background-corner-decoration" />
</div>
</div>
<body>
</body>
并添加:
#background-page-container {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
overflow: hidden;
}
这至少在 Firefox 中有效,但这似乎不是一个好的做法,我确信所有浏览器都不能正确呈现它。有没有更好的方法来完成我想要的,同时将所有显示元素保留在 <body> 中(也就是说,将背景图像剪裁在 <body> 的边缘而不是扩大它)?
感谢您的帮助,
gs.
编辑:根据要求,这里有 jsfiddles 来说明问题:
- Hiigaran 的解决方案如下所示:http://jsfiddle.net/kn36A/
- 这是一个正确对齐的解决方案,但在重新调整窗口大小时会导致难看的滚动条:http://jsfiddle.net/w446Q/
- 这是迄今为止我拥有的“最佳”(?)解决方案,但它似乎违反了 HTML 最佳实践:http://jsfiddle.net/H2PLr/
到目前为止,我用 #3 测试过的每个浏览器似乎都可以正确呈现它——这个解决方案真的像我想象的那么糟糕吗?
再次感谢!
通用电气
【问题讨论】:
标签: css html background position element