我想创建一个网页布局,侧边栏位于右侧,主要内容围绕侧边栏流动。
要求:
- 侧边栏下方的内容应占据所有可用宽度
- 侧边栏下方的内容在碰到侧边栏左侧时不应换行
- 主要内容应在标记中的侧边栏之前
- 侧边栏具有固定宽度但未知/可变高度
- CSS-only - 没有 JavaScript 解决方案
这可以在没有第三个要求的情况下实现:如果侧边栏在标记中的主要内容之前并且在同一个包含元素内,那么一个简单的右浮动就可以完成这项工作。标记中主要内容之前的侧边栏不是这里的选项。侧边栏将包含补充信息和广告。如果这是在标记中的主要内容之前,那么对于无 CSS 浏览器和屏幕阅读器用户(即使使用“跳到...”链接)来说,这将会很烦人。
这可以在没有第四个要求的情况下实现。如果侧边栏有一个固定的高度,我可以在主要内容之前放置一个包含元素,将其浮动并给它一个合适的宽度和高度,然后使用绝对定位将侧边栏放在预制空间的顶部。
示例标记(没有 CSS,仅相关位):
<body>
<div id="content">
<p>
Lorem ipsum ....
</p>
<p>
Pellentesque ....
</p>
<div id="sidebar">
/* has some form of fixed width */
</div>
</div>
</body>
示例布局:
替代文字 http://webignition.net/images/layoutexample.png
我不确定这是否可能。我很高兴接受权威的回答,说明这是无法实现的。如果这不能实现,我会很感激解释——知道为什么不能实现比仅仅被告知不能实现更有价值。
更新:我很高兴看到不满足所有五个要求的答案,只要答案说明忽略了哪个要求以及忽略该要求的后果(利弊)。然后我可以做出明智的妥协。
更新 2:我不能忽略要求 3 - 侧边栏不能位于内容之前。