我有一个解决方案,它有一些小的限制,但对于比 IE6/7 更新的浏览器可以很好地工作。
您可以在以下位置查看工作页面:http: //jsfiddle.net/audetwebdesign/6jnWE/show/
并在以下位置查看代码和 CSS:http: //jsfiddle.net/audetwebdesign/6jnWE
CSS看起来像:
* {
margin: 0;
padding: 0;
}
html, body {
margin: 0;
padding: 0;
height: 100%;
}
#header {
background: url(http://assets.nbn-studio.com/apache_pb.gif) #CC0;
height: 10%;
min-height: 50px;
width: 100%;
}
#wrap-outer {
width: 100%;
height: 80%;
display: table;
}
#side-left {
display: table-cell;
vertical-align: top;
background: url(http://assets.nbn-studio.com/arrow-left-2.png) right top repeat;
height: inherit;
}
#left-content {
float: right;
background: url(http://assets.nbn-studio.com/arrow-left.png) repeat-y;
width: 150px;
height: 100%;
}
#content {
display: table-cell;
vertical-align: top;
width: 800px;
background: url(http://assets.nbn-studio.com/knot.png) repeat;
}
#side-right {
display: table-cell;
vertical-align: top;
background: url(http://assets.nbn-studio.com/arrow-right-2.png) left top repeat;
height: inherit;
}
#right-content {
float: left;
background: url(http://assets.nbn-studio.com/arrow-right.png) repeat-y;
width: 150px;
height: 100%;
}
#footer {
background: #6C9;
height: 10%;
min-height: 50px;
width: 100%;
clear: both;
}
在这种方法中,我声明display: table
了 for#wrap-outer
和display: table-cell
for #side-left
、#content
和#side-right
。我可能已经使用了一些绝对定位的元素来达到类似的效果。
关键是分别将 和 的相对高度设置为10% #header
、80% 和 10%。现实情况是,如果没有看到足够小的窗口大小的垂直滚动条,您就无法混合使用 % 和 px 的高度单位。我的妥协是为页眉和页脚设置一个值,并设计任何艺术品以具有一定的灵活性。如果垂直滚动出现在小屏幕上,则可以忍受。#wrap-outer
#footer
min-height
另外,请注意height: inherit
for#side-left
和的使用#side-right
。
使用多个背景图像
如果您专注于支持 CSS3 的较新浏览器,您可以通过使用多个图像来简化标记,并#wrap-outer
消除所有元素中的背景图像(与右侧类似)。#side-left
#left-content
使用表格单元格
table-cell
IE6/7 不支持该属性,这对某些用户来说可能是个问题。
修复 IE7
我想出了一个不使用的替代布局table-cell
。
您可以在以下位置查看:http: //jsfiddle.net/audetwebdesign/c7vTL/
我使用 . 定位侧面板position: absolute
。
我做了一些修改以允许这个版本工作:
中心背景图像固定到包装器而不是内容元素。这需要为侧边栏设置背景颜色(白色)。
包装器上的溢出被隐藏。