3

我一般同意网站布局应该使用 <div>s 而不是 <table>s 的想法。但是,我遇到这种情况不起作用 - 或者至少,我还没有找到任何解决方案。

我有一个动态站点,许多客户共享相同的模板(他们可以从一组可用模板中选择一个)。模板定义了网站的总体布局——通常是顶部的标题、两列或三列(左侧的菜单、中间的主要内容、有时右侧的附加内容)和底部的页脚——没什么特别的。客户对标题和右侧内容的内容有完全的控制权,对菜单和主要内容区域的内容有很大的控制权。

这里的重点是我不知道任何列的宽度是多少。客户可以为每个菜单项设置长文本或短文本,他们可以在右侧栏中放置小图或大图,主要内容可以是免费的。我不能对我的客户施加太多的设计限制——他们对网站的外观有自己的想法(其中一些比 MySpace 页面更丑陋)。网站有一个“首选”宽度(主要的 <table> 宽度属性),因此当内容合理时,网站可以保持漂亮的外观。

基于表格的布局只是处理这个问题 - 无论列的大小如何,表格都会调整以适应。<div>s 然而,不要。如果菜单变宽一点,其他列会下拉到它下方。如果某些内容对于它的容器 <div> 来说太宽,它会超出边界并干扰它旁边的任何内容。

我玩过使用 Javascript 来调整列宽,但这会导致布局闪烁,其中 <table> 只是渲染它而没有任何大惊小怪。我知道 CSS 显示属性的各种与表格相关的选项,但由于它们的支持不够广泛(顽皮的 IE),我无法使用它们。(顺便说一句,<table>s 从未打算用于布局的论点,所以我们应该使用 <div>s - 然后告诉他们表现得像 <table>s - 对我来说听起来很有趣。 )

因此,虽然出于所有常见原因我想切换到基于 <div> 的布局,但我不相信我可以使用这些模板(或者,至少在每个人都升级到 IE 10 之前不能)。我希望 SO 帮派可以帮助我找到一种方法来做到这一点。


确保您的 html 标记有效。您可以使用w3c提供的验证服务。或者,如果您使用任何 IDE,请检查它是否具有验证功能

4

4 回答 4

4

您可以提出一个论点,即在您的情况下,布局毕竟本质上是一张桌子。通常,<div>'s 中的要点是精确的布局并不重要。它必须具有适应性。如果屏幕尺寸发生变化,导致无法使用原始布局,浏览器会尝试随机播放元素以获取仍然有效的内容。这就是为什么<div>'s 通常是首选的原因之一。

在您的情况下,您希望将该控制权交给用户。然后它实际上是一个表格,他们可以在其中选择每个单元格的尺寸和内容。它最终看起来像一个网页的事实几乎是巧合。

你不是在设计网页。如果你是,你应该(并且可以)使用<div>'s. 您正在创建一个表格,您的用户可以在其中填写他们喜欢的内容。

我敢肯定,一些纯粹主义者会不同意这个答案,但最终,规则不是“从不使用<table>,而只是“从不<table>用于布局”。而且你没有将它用于布局。你正在使用它来提供为您的用户填充数据的固定结构。

于 2009-10-17T15:49:57.740 回答
1

当试图告诉复杂设计完全按照设计师(或控制狂客户)想要的方式运行时,使用 DIV 有时需要付出巨大的努力。

如果可能的话,我会使用表格而不是 div,这让我在处理一个安排紧凑的项目时,在处理不同的浏览器时高枕无忧。

或者,当我有时间时,我会使用 DIVS 作为正确处理事情的优雅方式。就是图个好玩儿。

于 2009-10-17T16:19:17.907 回答
1

你可以看看这篇文章:多列布局,但我倾向于同意。根据网站布局的性质,使用 div 进行布局可能会很棘手,甚至到了不切实际的地步。这只是一些浏览器不是我们需要它们始终这样做的地方。

于 2009-10-17T15:44:03.213 回答
0

有些人会争辩说,你可以通过各种 CSS 魔法获得相同(或足够接近)的确定性水平。它只是需要不同的心态。对于我们这些用桌子“长大”的人来说,它是不同的,需要重新学习。我们需要这样做,因为这与以前的网络不同。

话虽如此,我确实认为表格的名声有点差,我怀疑这与开发人员对基于表格的设计的反应“长大”的新人有很大关系——但没有历史,而且对网页设计有更深入的了解,他们更倾向于那些似乎在扩散和相互依赖的乏味咆哮。但这是另一天的另一个咆哮。

我将建议关闭这个问题,因为它不是 SO 的问题。

于 2009-10-17T16:20:07.720 回答