我通常同意网站布局应该使用< div>而不是< table>来完成。但是,我有一种情况,这种情况不起作用 - 或者至少,我没有找到任何解决方案。
我有一个动态网站,许多客户共享相同的模板(他们可以从一组可用的模板中选择一个)。模板定义了网站的总体布局 - 通常是顶部的标题,两列或三列(左侧的菜单,中间的主要内容,有时是右侧的其他内容),底部的页脚 - 没什么特别的。客户可以完全控制标题内容和右侧内容,并对菜单内容和主要内容区域进行重要控制。
这里的要点是我不知道任何列的宽度是多少。对于每个菜单项,客户可以有长文本或短文本,他们可以在右侧列中放置小图像或大图像,并且主要内容可以是免费的。我不能对我的客户施加太多的设计限制 - 他们对网站应该是什么样子有自己的想法(其中一些比MySpace页面更加丑陋)。网站有一个“首选”宽度(主< table> width属性),因此当内容合理时,网站会保持良好的外观。
基于表格的布局只是处理这个 - 无论列的大小如何,表格都会调整以适应。然而,< div> s,不。如果菜单稍宽,则其他列会在其下方下拉。如果某些内容对于其容器< div>来说太宽,它会越过边界并干扰它旁边的任何内容。
我玩过使用Javascript调整列宽,但这会导致布局闪烁,其中< table>只是渲染它没有任何大惊小怪。我知道CSS显示属性的各种与表相关的选项,但由于它们不被广泛支持(顽皮的IE)我不能使用它们。 (并且除了嗤之以鼻之外,< table> s从不打算用于布局的论点,所以我们应该使用< div> s - 然后告诉他们表现得像< table> s - 听起来很有趣对我来说。)
因此,虽然我想基于所有常见原因切换到基于< div>的布局,但我不相信我可以使用这些模板(或者,至少,直到每个人都升级到IE 10)。我希望SO帮会能帮我找到办法。
答案 0 :(得分:4)
你可以提出一个论据,在你的情况下,布局本质上毕竟是一个表。通常,<div>
中的要点是精确的布局并不重要。它具有可适应性。如果屏幕大小发生变化,以至于无法进行原始布局,则浏览器会尝试对元素进行随机播放以获得仍然有效的内容。这就是为什么<div>
通常是首选的原因之一。
在您的情况下,您希望将该控件提供给用户。然后它实际上是一个表格,在那里他们可以选择每个单元格的尺寸和内容。它最终看起来像一个网页的事实几乎是巧合。
您不是在设计网页。如果你是,你应该(并且可以)使用<div>
。您正在创建一个表格,您的用户可以使用他们喜欢的内容填写该表格。
我确信一些纯粹主义者不同意这个答案,但最终,规则不是“永远不要使用<table>
,而是简单地”永远不要使用<table>
进行布局“。而你不是使用它进行布局。您正在使用它为用户提供固定的结构来填充数据。
答案 1 :(得分:1)
你可以看看这篇文章:Multi-Column layouts但我倾向于普遍同意。根据网站布局的性质,使用div作为布局是不切实际的。这只是一些浏览器不在我们需要它们总是这样做的地方。
答案 2 :(得分:1)
当试图告诉复杂的设计与设计师(或控制狂的客户)想要的完全一样时,使用DIV有时需要付出巨大的努力。
在可能的情况下,我使用表而不是div,这使我在使用不同浏览器时处理紧密计划的项目时可以放心。
或者,当我有空的时候,我会使用DIVS作为一种优雅的做事方式。只是为了它的乐趣。
答案 3 :(得分:0)
有些人会争辩说,你可以使用和各种各样的CSS魔法获得相同(或足够接近)的确定性。它只是需要一种不同的心态。对于我们这些与桌子“长大”的人来说,它是不同的,需要一些重新学习。这是我们需要做的,因为这与以前的网站不同。
话虽如此,我确实认为桌子有点糟糕的说唱,我怀疑它对于那些在开发人员对基于表格的设计的反应“长大”的新人有很多帮助 - 但没有历史,以及对网页设计的深入了解,他们更倾向于看起来相互激增和相互依赖的无聊咆哮。但这又是另一天的咆哮。
我会建议关闭这个问题,因为它不是SO的问题。