目前仅使用 CSS/HTML 无法自动将两列彼此相邻浮动。实现这一目标的两种方法:
方法1:当没有连续文本时,只有很多不相关的段落:
将所有段落向左浮动,给它们包含元素宽度的一半,如果可能,设置一个固定的高度。
<div id="container">
<p>This is paragraph 1. Lorem ipsum ... </p>
<p>This is paragraph 2. Lorem ipsum ... </p>
<p>This is paragraph 3. Lorem ipsum ... </p>
<p>This is paragraph 4. Lorem ipsum ... </p>
<p>This is paragraph 5. Lorem ipsum ... </p>
<p>This is paragraph 6. Lorem ipsum ... </p>
</div>
#container { width: 600px; }
#container p { float: left; width: 300px; /* possibly also height: 300px; */ }
您还可以在段落之间插入更清晰的 div 以避免必须使用固定高度。如果您想要两列,请在两两段落之间添加一个更清晰的 div。这将使下两个段落的顶部对齐,使其看起来更整洁。例子:
<div id="container">
<p>This is paragraph 1. Lorem ipsum ... </p>
<p>This is paragraph 2. Lorem ipsum ... </p>
<div class="clear"></div>
<p>This is paragraph 3. Lorem ipsum ... </p>
<p>This is paragraph 4. Lorem ipsum ... </p>
<div class="clear"></div>
<p>This is paragraph 5. Lorem ipsum ... </p>
<p>This is paragraph 6. Lorem ipsum ... </p>
</div>
/* in addition to the above CSS */
.clear { clear: both; height: 0; }
方法二:当文本是连续的
更高级,但可以做到。
<div id="container">
<div class="contentColumn">
<p>This is paragraph 1. Lorem ipsum ... </p>
<p>This is paragraph 2. Lorem ipsum ... </p>
<p>This is paragraph 3. Lorem ipsum ... </p>
</div>
<div class="contentColumn">
<p>This is paragraph 4. Lorem ipsum ... </p>
<p>This is paragraph 5. Lorem ipsum ... </p>
<p>This is paragraph 6. Lorem ipsum ... </p>
</div>
</div>
.contentColumn { width: 300px; float: left; }
#container { width: 600px; }
谈到易用性:对于非技术客户来说,这些都不是真的容易。您可以尝试向他/她解释如何正确执行此操作,并告诉他/她原因。无论如何,如果客户将来要通过 WYSIWYG 编辑器更新网页,学习非常基本的 HTML 并不是一个坏主意。
或者您可以尝试实现一些 Javascript 解决方案,该解决方案计算段落总数,将它们分成两部分并创建列。对于那些禁用 JavaScript 的人来说,这也会优雅地降级。如果这是一个选项,第三个选项是让所有这些拆分成列的操作发生在服务器端。
(方法三:CSS3多列布局module)
您可能会阅读CSS3 的做法,但它对于生产网站来说并不实用。至少还没有。