我想要什么
两个div:页面正文(1)和背景块(2)
约束
我尝试了什么
页面正文CSS:
#pageBody {
width: 820px;
margin: 0 auto;
}
后台块CSS:
1。一个整页div,显示以CSS为中心的背景
<div id="backgroundBlock"></div>
<div id="pageBody">
</div>
#backgroundBlock {
background: no-repeat center 0 url(bg.png);
width: 100%;
height: 100%;
position: absolute;
}
但是当窗口的大小是奇数时:
2。重新定位的子div
<div id="pageBody">
<div id="backgroundBlock"></div>
</div>
#backgroundBlock {
background: no-repeat url(bg.png);
width: 2560px;
height: 780px;
position: absolute;
margin: 0 0 0 -870px;
overflow: hidden;
}
但问题:背景块 ...
的滚动条显示答案 0 :(得分:2)
以下是我能想到的一些想法,以及他们的问题。但是,我无法重现“IE中的模糊”问题,所以我不知道是哪种解决方案
我确实将“额外标记”作为解决方案的问题,包括仅用于显示背景图像的div
(#backgroundBlock
),因为它不是语义。
说明:正文上有多个背景。 <{1}} div不需要。
#backgroundBlock
问题:
说明:使用body {
background: no-repeat center top url(bg.png), url(bodybg.png);
}
。不再有像素对齐错误。
translate
问题:
#backgroundBlock
{
background: url(bg.png);
width: 2560px;
height: 780px;
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%, 0);
}
上使用overflow-x: hidden
以避免水平滚动条body
,-webkit-
,...)。我没有添加它们以保持示例简单 说明:使用-moz-
和translate
。替代版本的解决方案3 。由于每个支持2D转换的浏览器都支持::before
(source),因此伪元素兼容性不是问题。
::before
问题:
#backgroundBlock
{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
#backgroundBlock:before
{
content: '';
background: url(bg.png);
width: 2560px;
height: 780px;
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%, 0);
}
,-webkit-
,...)。我没有添加它们以保持示例简单还有其他可能性,但我认为其中大多数都会遇到上述问题之一
例如,您可以将-moz-
宽度设置为2560px,在其上设置背景,添加填充以使内容大小为820px并使其#pageBody
以使其在页面上居中(并防止在translate
上使用overflow-x
的水平滚动条。这是可能的,因为背景图像和页面主体都有固定的宽度。