现在提到网页的页面布局,我们最先想到的就是用 div 来处理,似乎要做页面布局就只能靠 div,但其实我们忘了还有另一个方法,就是 table。
我在大约十年前就开始学习网页设计,记得当时没有 CSS,没有 PHP,HTML 之中也没有 div、span 这些标记,要做页面布局,靠的就是 table。后来 HTML 继续发展,推出了 div、span 这些标记,再加上 CSS 也面世了,做网页也轻松兼有效率了许多。
现在 div 成为了主流,table 反倒渐渐被人遗忘,只在做表格时才会用到,但这不表示在页面布局上 table 就比 div 来得差。正确来说,我觉得 table 和 div 各有优缺点,如果结合这两种方法,相信在网页设计上会比只用其中一种来得好。
Table 的优点在于其历史悠久,在各浏览器中都有稳定的表现,即使是像 IE6、IE5 这类古老的浏览器。而且它在处理一些特殊的布局如栏位等高方面,比 div 来得理想,更简单。缺点就是需要使用较多的标记,如 <table>、<thead>、<tbody>、<tr>、<td>,在处理复杂的页面倍感辛苦,而且 table 不够灵活,在现在丰富的页面元素中,table 更显得力不从心。
Div 的优点就是简单和灵活,再搭配 CSS 的帮助,让我们可以更容易地设计出各式各样的网页。Div 没有 table 那样需要使用一堆的标记,它很简单,就是一个 <div> 就搞定。它灵活,搭配 CSS 的 position 和 float,可以轻松的控制页面上的元素按我们的要求来摆放。但 div 的缺点是,每个 div 是独立的,个别 div 不会互相影响,这在设计栏位等高以及表格时,就能看出 div 的麻烦。
就说说【栏位等高】吧!要让页面中左右两边的栏位高度一致,在 table 中可以轻松实现,但在 div 中就非常麻烦,关于在 div 中如何实现栏位等高,可以参考这篇文章: Four Methods to Create Equal Height Columns | Build Internet。另外在制作表格时,table 的表现也比 div 来得理想。
unogz 推友在 twitter 中有说到:好用是好用,但页面质量不高。布局本该用 div,兼容性应该靠 css hack。
我就在这里解释一下。(因为 Twitter 那 140 字的限制不够用…)
首先,用 table 布局并不会降低页面质量,如果是这样,那现在 Twitter 和 Picasa Web 的页面岂不是页面质量不高?因为他们也是用到了 table 来布局。
其次,如果布局本该用 div 的话,那十年前 div 还没出现时,网页该怎么做呢?
第三,CSS hack 并不是万能,不是所有浏览器兼容性的问题都能靠 CSS hack 来处理,至少栏位等高就没办法。
最后,我个人觉得,div 和 table 都有其优缺点,在必要的时候,融合这两种布局方式,取长补短,才能事半功倍,你们说对吗?
43 comments
Add comment