我有一个身体看起来像这样的网站:
<body>
<div id="header">...</div>
<div id="content">...</div>
<div id="footer">...</div>
</body>
在这些s中没有使用绝对/相对定位技巧,但是在这些s及其内部元素的样式中div
有很多float
s,clear
s,margin
s和s。所有这些都产生了一个看起来像这样的网站:padding
div
┌───────────────┐
│ header │
└───────────────┘
┌───────────────┐
│ content │
└───────────────┘
┌───────────────┐
│ footer │
└───────────────┘
我的问题是:如何添加一个独立的固定宽度左栏(侧边栏)和额外的内容,这些内容会收缩整个网站(页眉内容页脚)并将它们向右移动。
┌────┐┌─────────┐
│side││ header │
│bar │└─────────┘
│ │┌─────────┐
│ ││ content │
│ │└─────────┘
│ │┌─────────┐
│ ││ footer │
└────┘└─────────┘
我知道一种几乎理想的解决方案,但它很丑陋并且需要重新嵌套现有的 div:
<body>
<table>
<tr>
<td id="sidebar">...</td>
<td>
<div id="header">...</div>
<div id="content">...</div>
<div id="footer">...</div>
</td>
</tr>
</table>
</body>
是否可以优雅地做到这一点,只需在正文某处添加一个外部侧边栏元素,即,像那样?
<body>
<div id="sidebar">...</div>
<div id="header">...</div>
<div id="content">...</div>
<div id="footer">...</div>
</body>
我尝试过幼稚的方法 - 例如造型:
#sidebar { float: left; width: 20em; }
或者
#header { margin-left: 20em; }
#content { margin-left: 20em; }
#footer { margin-left: 20em; }
这种工作,但它会尽快中断clear: both
或clear: left
在页眉/内容/页脚中遇到。
那么,表解决方案有什么替代方案吗?