简而言之
我需要一个符合以下要求的CSS解决方案:
更多细节
今天我的当前网站项目的新要求出现了:左侧和右侧有渐变的背景图像(替换当前的身体背景图像)。现在的挑战是指定两个不同的背景图像,同时保留其余的布局规范。不幸的是,(简单)布局在某种程度上不符合两种背景。
我的布局基本上是一个固定宽度的中心列:
#main_container {
background-color: white;
margin: 0 auto;
min-height: 100%;
width: 800px;
}
此外,有必要将色谱柱拉伸至最小高度100%,因为有一些页面只有很少的内容。以下CSS样式负责:
html {
height: 100%;
}
body {
background-image: url('old-background.png');
margin: 0;
height: 100%;
padding: 0;
}
到目前为止一直很好 - 直到带有渐变的新身体背景图像到达。我尝试了以下解决方案
对于其中任何一个,动态高度解决方案都被破坏了。当主容器太小时,主容器没有伸展到100%,或者当内容实际上更长时背景保持在100%
答案 0 :(得分:2)
修改:
<body>
<div class="container"><div>
<div id="main_content"></div>
</body>
使用css:
html {
height: 100%;
}
body {
background: url(left.png) repeat-y top left;
background-attachment:fixed;
height: 100%;
margin: 0;
padding: 0;
}
div.container {
background: url(right.png) repeat-y top right;
height: 100%;
width: 100%;
position:fixed; /* This won't work in all browsers. May need a JS solution for IE6 */
}
#main_content {
height: 100%;
width: 800px;
margin: 0 auto;
background-color: white;
}
修改强>
此版本适用于支持position:fixed
(不是ie6)的浏览器。
答案 1 :(得分:0)
<强> [改造] 强>
我很傻。非常。
问题:body
需要有bg图片,#main_container
需要有800宽度且位于中心。
(糟糕的方法:我正在使用bg图像进行#main_container
,而不是居中,800px。)
新方法:我建议在新div
内body
内span
和div
:
<body>
<div>
<span>
<div id="main_container">
Regular contents.
</div>
</span>
</div>
</body>
然后:
body {
background: url(img/bg_left.gif) repeat-y top left;
}
body>div {
background: url(img/bg_right.gif) repeat-y top right;
}
body>div: {
text-align: center;
}
body>div>span {
display: inline-block;
/* IE only likes this rule on elements that are inline by nature, thus the use of span.
I'm not sure 100% height will work on #main_container. */
}
和你的常规规则:
#main_container {
background-color: white;
margin: 0 auto;
min-height: 100%;
width: 800px;
}
答案 2 :(得分:0)
使用“布局表”,我的问题可以解决。但是,纯CSS解决方案将是首选!
这是一个基于工作表的解决方案:
table.layout {
border-collapse: collapse;
height: 100%;
margin: 0;
padding: 0;
width: 100%;
}
table.layout td {
margin: 0;
padding: 0;
vertical-align: top;
}
td.layout_left {
background-image: url('background-left.png');
background-position: top left;
background-repeat: repeat-y;
}
td.layout_center {
background-color: white;
width: 800px;
}
td.layout_right {
background-image: url('background-right.png');
background-position: top right;
background-repeat: repeat-y;
}
HTML代码:
<table class="layout">
<tr>
<td class="layout_left"> </td>
<td class="layout_center">
<!-- content -->
</td>
<td class="layout_right"> </td>
</tr>
</table>