我知道有各种各样的优秀论点喜欢CSS定位在基于表格的布局。我想知道的是,CSS模型是否完整(假设一个相对较新的浏览器)与表的所有功能有关。表格可以实现的布局是不可能的还是不切实际的CSS?表格可以做CSS定位不能做什么?
回答
如果可以的话,我会切换到基于CSS的布局。语篇论证是正确的,但有实际的考虑。表会:
- 绝对防止“浮动包裹”,其中一个div将下降到下一行,因为没有它
- 给你同样的高度列
- 允许动态布局,其中宽度足够的空间和高度不为人所知,直到运行时
- 提供colspans和rowspans
- 减少SO问题问如何做的东西,而表:)
有一些模仿其中的一些CSS显示属性(表格单元格等),但我不相信这种支持已经足够普及到使用它们(除非你可以控制用户的浏览器选择)。
我工作的网站需要在布局中采用竞争性的动态列宽。多个客户使用相同的网站模板,我不知道他们将放入菜单或页面标题或内容单元中。 (并且不知道他们会发现什么吸引人的,这是另一个问题......)使用一个外部表格来布置网站的主要部分可以提供我所需要的灵活性,而不用担心稍微太宽的菜单会推动主要内容框到下一行,或者背景颜色不会填充所需的高度。在一个完美的(对我来说)的世界里,我们将有<table>
s为表格数据,另一个几乎相同的一组布局标签 - 称为<layout>
(以及相应的行和单元格标签)。或者,为<table>
标签添加一个“模式”属性 - 这些值将是“数据”和“布局”,以便屏幕阅读器和搜索引擎知道该怎么做。也许在HTML 6 ...
编辑:我应该添加,关于'浮动包装'的事情 - 有一个当前的问题,以及一个工作得很好的答案here。这并不完美,太复杂了,但它在很多情况下都能解决问题。
表意和应该用于表格数据,而不能用于结构。就我个人而言,我将桌子看作一个简单的出路,而我从来没有遇到过无法用CSS解决的情况。
表是垂直定位和全高度肯定列更容易,但是这同样可以用CSS来克服。
的 同样的方式我不是一个谁主张切割编程角落,但存在以下情况:一个“黑客”只是比做事“理想”的方式更好。 Html表格工作。在每个浏览器中。总是。他们很容易理解和维护。在布置div时,CSS与此相反。 – Nemi 2010-04-01 17:06:02
@Nemi - Boo!那么标准是什么? – 2010-04-01 17:37:19
+ -0我非常不同意。 *有*情况,如果没有表或JavaScript,就无法处理。 CSS标准的设计者在提供用于布局的'table'的替代方案方面做得不好,为什么,我不知道。至于“简单的出路”,我向你们提出,当选择介于五行“
+0为第一,-1为第二和第三,+1为第四和第五。 :D – ANeves 2010-04-01 17:16:59
@sr pt:我很高兴你给了我第一个+0,而不是-0 ......认真地说,我已经看到了大部分这些东西的部分解决方法,但从来没有真正动态的宽度(我的第3个)。你有东西给我吗? – Ray 2010-04-01 17:26:03