为什么80%的码农都做不了架构师?>>>   

在网站设计中,有两种情况会使用到TABLE:

一是页面布局,现在的网站都有布局。例如OSC的首页布局存在着最顶端的navigation,接下来的banner,和中间最大的screen三块。screen又包含了content和footer两个子块。content中又包含着各种内容模块。

二是数据展示表格。在网页上展示数据集合的时候,势必要用到表格。

然而,现在非常流行的DIV+CSS也可以展现TABLE所能够展现的样式。它们之间存在什么样的竞争关系,我们如何取舍呢?

首先总结一下各自的优缺点,然后再详细解释为什么。

  1. 易用性,TABLE>DIV+CSS
  2. 浏览器兼容性,TABLE>DIV+CSS
  3. 绘制性能,TABLE<DIV+CSS
  4. 可读性,TABLE<DIV+CSS
  5. 维护性,TABLE<DIV+CSS
  6. 扩展性,TABLE<DIV+CSS
  7. 内容动态创建,TABLE在IE上无法做到。

TABLE在使用上是最简单的,所有的浏览器都支持TABLE,开发者可以简单的使用TABLE语法便可以做到布局或者表格。而DIV虽然也可以做到,但需要开发者编写大量的CSS与之匹配。浏览器绘制界面的最小单位是块状元素,TABLE作为一个复杂的块状元素,绘制效率要比DIV差。此外,由于TABLE的语法特点,使得它的可读性和扩展性都要比DIV要弱很多。当开发者想要更改网站的风格或者布局的时候,TABLE则需要改动大量的代码,而DIV则只需要调整CSS即可。但在各个浏览器的兼容性上,TABLE又有着优势,不需要额外代码,便可使TABLE在各个浏览器上展示,但DIV需要额外的CSS支持,因为各个浏览器对CSS的支持不同。

在当下各种AJAX和各种JS framework横行的互联网行业,网站内容的动态性越来越突出。用户操作不需要频繁的刷新页面,而是利用AJAX获取后台新内容,并更新局部的DOM TREE。这时候,TABLE就有缺点了。

首先,TABLE的性能比DIV要差,在TABLE中删除和添加元素,需要重新渲染TABLE。其次,TABLE在IE上无法使用JS对其DOM TREE进行改动。这种情况体现在,JS无法向TABLE中添加一个新的TR元素,也无法删除一个TR元素。在各个浏览器上运行以下代码,就可以体会到:

var str = ['<table>','<thead>','<tr>','<td>head</td>',  '</tr>','</thead>','<tbody>','<tr>','<td>body</td>',  '</tr>','</tbody>','</table>'
].join('');
document.body.innerHTML=str;
var list = document.getElementsByTagName('tr');
var htd = document.createElement('td');
htd.innerHTML='new head';
// insert a new td into head
list[0].appendChild(htd);
// remove the new head
list[0].removeChild(htd);var htr = document.createElement('tr');
htr.innerHTML="<td>new head row</td>";
// insert a new td into head
list[0].parentNode.appendChild(htr);
// remove the new head
list[0].parentNode.removeChild(htr);var btd = document.createElement('td');
btd.innerHTML='new body';
// insert a new td into body
list[1].appendChild(btd);
// remove the new body
list[1].removeChild(btd);var btr = document.createElement('tr');
btr.innerHTML="<td>new body row</td>";
// insert a new td into body
list[1].parentNode.appendChild(btr);
// remove the new body
list[1].parentNode.removeChild(btr);

从使用经验上来讲,一般简单清晰的布局使用DIV,复杂嵌套的布局使用TABLE。以OSC首页的布局。OSC的布局由3块组成,Nav,Banner和Screen,而Screen又由Content和Footer组成。这种简单清晰的布局,OSC使用了DIV来实现每一个块。但Content下面的内容分类众多,排版复杂,所以用了TABLE,也混用了DIV。在数据集合展示上,比较流行的是条目状展示。这时候一般使用TABLE或者UL。UL也是条状布局的一种常用选择。

转载于:https://my.oschina.net/xpbug/blog/146813

TABLE与DIV的取舍相关推荐

  1. table和div在页面布局上应该注意的问题

    在这篇文章开篇,我先纠正一下我之前写的一篇入门文章的错误,还是先引用一下比较官方的说法吧,避免再次误导各位新手 " <!DOCTYPE> 声明必须位于 HTML5 文档中的第一行 ...

  2. js动态增加,删除td,tr,table,div

    js实现的动态添加,删除table内容: 截图如下: 1. 2. 源代码: main.css body {background-image: url(../images/qiantai/bg.png) ...

  3. 用CSS控制Table和div因撑开而变形

    用CSS控制Table和div因撑开而变形 http://inrainight.blogbus.com/logs/50853786.html <style> table { table-l ...

  4. HTML中的table和div

    转载自牛头大魔王·力破千军和yang_zongjun的专栏 HTML中的table和div的优缺点 由于html文件中的table标签的浏览速度较慢,所以,使用嵌套表格的方法来布局网页框架会使网页浏览 ...

  5. 浅谈table和DIV网页布局

    DIV+CSS是网站标准(或称"WEB标准")中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定 ...

  6. HTML table 和 div

    像下面这样做就是作死,调试了我三小时才发现. <table> <div> <tr> </tr> </div> </table> ...

  7. js动态生产table、Div、select

    一种方法: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...

  8. html table 充满div,HTML,使用div+css实现自适应table布局

    css部分 div.table{ border:1px solid #000000; margin-left:-1px; border-bottom-width:0; border-left-widt ...

  9. table和div的比较

    以下文字为搜集一些网站或论坛里面的文章,不代表本人观点,仅供参考. ============================================================= 其实并不 ...

  10. Iframe框架+table布局 +div布局实例

    <tdcolspan="2"style="width: 80%"><iframesrc="http://www.baidu.com& ...

最新文章

  1. 33关Python游戏,测试你的爬虫能力到底及格不?
  2. List-style-type属性失效
  3. 这些你都了解么------程序员跳槽法则
  4. MPI常用函数速查表
  5. 面试被问 | 防止 Java 代码被反编译的方法有几种?
  6. 阿里文娱实战 | 小而美的 egg-react-ssr 开源实现方案
  7. CCCC-GPLT L2-020. 功夫传人 团体程序设计天梯赛
  8. 易到高管被原百度外卖CEO巩振兵逼下跪:职场人到中年的无奈
  9. mysql类型float_Mysql数据类型---FLOAT
  10. python 西门子wincc_西门子SIMATIC Manager和SIMATIC WinCC Explorer万能授权
  11. 计算机 运行新ie 命令,怎样修复ie浏览器-运行什么命令可以修复IE浏览器,请说的详细 – 手机爱问...
  12. WPS广告弹窗永久关闭
  13. 【滤波器】2. 有源滤波器概述
  14. LWIP源码分析——ip4.c
  15. 西安80转2000坐标参数_!!!西安80坐标与地方坐标系的转换方法技巧
  16. [前端优化]基于H5移动端优化总结
  17. windows 10 清理系统盘
  18. Level2行情接口
  19. Windows查看端口被占用查找步骤
  20. 洛谷P1118 [USACO06FEB]数字三角形Backward Digit Su…

热门文章

  1. 终端terminal个性化配置
  2. 【论文阅读】Combo-Attention Network for Baidu Video Advertising
  3. sql增删改查_5分钟GET全栈开发 - 增删改查的取经之路
  4. ubuntu MySQL-python 安装失败解决方法
  5. oracle gi 创建,浅谈Oracle RAC --GI的启动
  6. mysql limit索引变_Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架...
  7. hibernate CascadeType属性说明
  8. saltstack之nginx、php的配置
  9. 【t098】符文之语
  10. verilog 数据格式