我能够根据 Stu Nicholls 在 CSS Play 的技术提出一个“不需要 HTML 表格”的解决方案,我个人喜欢它,因为它不仅适用于 IE6+ 和 FF2+,它也是有效的 CSS需要任何黑客。关于为什么基于 CSS 的布局比 HTML 表格更可取的论点,请参见下文。
首先,我建议在使用 CSS 设计新页面时使用符合标准的浏览器模式。有关 quirksmode 和标准兼容模式的说明,请从我最喜欢的 CSS 资源站点之一查看这篇文章。您所要做的就是在页面顶部添加一个特定的 DOCTYPE 元素。然后,CSS 将被迫以符合标准的模式呈现,从而减少错误和浏览器特性。如果您无法切换到标准兼容模式,则可以在 quirksmode 下为浏览器提供最小宽度解决方案,也可以在 CSS Play 上找到。
其次,您必须在现有标记周围添加一个额外的包装器。这个包装器用于为理解 min-width(不是 IE)的浏览器设置 min-width。然后,您可以使用 * html 技巧专门针对 IE 6 并将 Stu Nicholl 的技术应用于内部包装器。此处详细介绍了该技术,使用的具体示例是“#2 For standards compliant mode IE”:
http://www.cssplay.co.uk/boxes/minwidth.html
最终结果相当简单。它使用原始问题中提到的2 列 ALA 样式技术创建 2 个 50% 列,这些列具有总最小宽度(在本示例中为 500 像素),其中列停止调整大小并且右列不低于左列。我希望这有帮助!
编辑:同样的技术可用于将跨浏览器兼容的最小宽度应用于任何东西。例如,列不需要每个为 50%,可以使用任意数量的列。http://www.glish.com/css/是基于 CSS 的页面布局的绝佳资源,当与这种最小宽度技术结合使用时,可以使用最少的有效 CSS 创建许多不错的布局。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
/* For browsers that understand min-width */
.width {
width: 100%;
min-width: 500px;
}
/* IE6 Only */
* html .minwidth {
border-left: 500px solid white;
position: relative;
float: left;
}
/* IE6 Only */
* html .wrapper {
margin-left: -500px;
position: relative;
float: left;
}
.left {
float: left;
width: 50%;
}
.right {
float: left;
}
</style>
</head>
<body>
<div class="width">
<div class="minwidth">
<div class="wrapper">
<div class="left">
Left
</div>
<div class="right">
Right
</div>
</div>
</div>
</div>
</body>
</html>
现在,我建立 Stack Overflow 帐户的动机是能够响应下面的建议“如果你想要两列,使用一个表格,而不是试图强迫 Div 表现得像一个表格”。由于我太新,无法发表评论或投反对票,因此我正在扩大这个讨论。
真的吗?
有人问了一个关于基于 CSS 的布局的问题,你的回答是告诉他们使用 HTML 表格?
首先让我说我不认为 HTML 表格是完全没有必要的。事实上,任何时候我需要显示表格数据,即关系数据,我都会使用 HTML 表格。尚不完全支持 CSS 表格显示属性(即将在 IE8 中推出!),使用单级HTML 表格是一种有效的解决方案。查看任何 Google 网页的标记,您会发现他们会同意。
作为一个花费大量时间编写跨浏览器兼容的基于 CSS 的布局的人,而他们本可以使用表格在 10 分钟内完成,我同意这个问题有一个更简单的解决方案。然而,仅仅因为你可以使用炸药来翻新你的厨房,并不意味着你应该这样做。下面的文章详细解释了为什么基于 CSS 的布局更受欢迎。
http://www.chromaticsites.com/web-design-blog/2008-04-03/13-reasons-why-css-is-superior-to-tables-in-website-design/