为什么不建议用table进行布局

本文部分内容转载自:http://www.html5tricks.com/why-not-table-layout.html

刚刚接触html的时候,利用table进行页面布局是比较容易的。但是,在实际的项目开发过程中,我们不建议用table进行布局,原因如下:

  1. table比其它html标记占更多的字节。(造成下载时间延迟,占用服务器更多流量资源)
  2. table会阻挡浏览器渲染引擎的渲染顺序。(会延迟页面的生成速度,让用户等待更久的时间)
  3. table里显示图片时需要你把单个、有逻辑性的图片切成多个图。(增加设计的复杂度,增加页面加载时间,增加http会话数)
  4. 在某些浏览器中,table里的文字的拷贝会出现问题。(会让用户不悦)
  5. table会影响其内部的某些布局属性的生效(比如<td>里的元素的height:100%) (限制页面设计的自由性)
  6. 一旦学了CSS的知识,你会发现使用table做页面布局会变得更麻烦。(先花时间学一些CSS知识,会省去你以后大量的时间)
  7. ‘table对’对于页面布局来说,从语义上看是不正确的。(它描述的是表现,而不是内容)
  8. table代码会让阅读者抓狂。(不但无法利用CSS,而且会不知所云,尤其在进行页面改版或内容抽取的时候)
  9. table一旦设计完成就变成死的,很难通过CSS让它展现新的面貌。(CSS ZEN GARDEN:http://www.csszengarden.com/

table的好处

在某些场合,使用table是完全合适、恰当和准确的。比如用table做表格。如果无法判断是否应该使用table,请问自己几个问题:

  • “是否这些行或者列的信息共享某一个属性?比如每行显示一个学生的信息,所有学生都有个‘姓名’属性。”
  • “如果我改变了这些行或者列的顺序,是不是依然有意义或者有同样的效果?”
  • “如果我将行变成列或者将列变成行,是不是依然有意义或者有同样的效果?”

如果答案仅仅是“我猜……也许不是”,那么就不应该用table。更多信息请参考“为什么用table布局不如HTML+CSS”。

不用table怎样让两个span显示在同一行

在进行HTML+CSS布局的时候,经常会遇到需要将控件(span、div等)放到同一行的情况,参考下面的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
<style type="text/css">
    div {
        width: 24px;
        overflow-x:hidden;
        white-space: nowrap;
    } 

    span {
        width: 15px;
        display:inline-block;
        border-style:solid;
        border-width:1px;
    }
</style>
</head>
<body>
    <div>
        <span></span><span></span>
    </div>
</body>
</html>

父层overflow-x:hidden可以避免当窗体大小发生改变时换行。这样对div和span进行CSS控制后,就可以避免使用table的tr进行页面布局,同时页面代码也更清晰。

时间: 2024-10-11 16:49:51

为什么不建议用table进行布局的相关文章

为什么不建议用Table布局

Tables的缺点 1.Table要比其它html标记占更多的字节.(延迟下载时间,占用服务器更多的流量资源.) 2.Tablle会阻挡浏览器渲染引擎的渲染顺序.(会延迟页面的生成速度,让用户等待更久的时间.) 3.Table里显示图片时需要你把单个.有逻辑性的图片切成多个图.(增加设计的复杂度,增加页面加载时间,增加HTTP会话数.) 4.在某些浏览器中Table里的文字的拷贝会出现问题.(这会让用户不悦.) 5.Table会影响其内部的某些布局属性的生效(比如<td>里的元素的height

div与table用作布局的区别

本文向大家描述一下DIV和Table页面布局的区别和联系,一般来说Table开发快,容易控制,浏览器兼容也好些,另一部分认为DIV好,是以后的发展趋势,主要原因请看下文详细介绍. DIV布局和Table页面布局的区别和联系 现在对于网页制作是选择传统的Table还是用新型的DIV,有分歧.一部分说还是用Table好,开发快,容易控制,浏览器兼容也好些;另一部分认为DIV好,以后的发展趋势,主要是如下原因: DIV+CSS布局比Table布局节省页面代码,代码结构也更清晰明了. DIV+CSS开发

企业生产环境不同业务,系统分区建议(自定义分区布局)

Linux系统对分区的要求 1.最少要有/分区 2.swap(交换分区)的作用:虚拟化内存,swap区分的大小=105*物理内存容量(mem<8G) 3.建议设置独立的/boot分区 #linux引导分区,存放系统引导文件,如果linux内核等,所有文件大小一般只有十几M,因此,该分区设置100-200M 企业生产环境不同业务linux系统分区建议(自定义分区布局) 1.常规分区方案 /分区:剩余硬盘大小 swap分区:内存的1.5倍(mem>8G) /boot分区:100M 2.DB及存储

CSS技巧!像table一样布局div

许多网页设计师都喜欢,将两个或者多个容器等高的并排放置,并在里面展示每个容器的内容,就象经典表格布局中的单元格控制几个栏目的位置,也喜欢容器的内容居中或顶部对齐显示. 但是你又不喜欢用table来实现他,那怎么办呢?实现的方法很多,有根据视觉错觉实现的,有用JS控制使高度相等的,还有采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题. 其实有个简单的方法,使用display:table, display:table-row and display:table-cel

display:table 表格布局

table 布局最大的特点 1.同行等高 2.宽度自动调节 那么table-cell是不是具备这个特点呢?答案是yes,为什么呢?css中有一个有意思的规则“创建匿名表格元素”. 拿table-cell来扯,就是,当某个元素被设置为display:table-cell的时候,如果她的父节点不是display:table-row,爷爷节点不是display:table,这个儿子生出了他的爸爸和爷爷(浏览器会自动创建者两个匿名盒对象) 用途 1.等高布局 2.和vertical-align:midd

table奇葩布局

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>Document</title> 7 </head> 8 <style type="text/css"> 9 * { 10 margin: 0; 11 padding: 0; 12 } 13

用table类型布局一个新闻网页

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><style type="text/css"><!--颜色-->a{color:black;}a:hover{color:red;}a:acti

表格table样式布局设置

<style> table{ border-collapse:collapse; margin:0 auto;} table tr td{ border:1px solid #000; line-height:40px; text-align:center;color:red;} </style> </head> <body> <table width="300"> <caption>直接使用表的 "bo

初学者用div+css结构写网页的几个误区

1.用div+css结构制作静态html网页不等于彻底抛弃古老的table写法.之所以不建议用table来布局网页是因为在网页加载很慢的时候要等table结构加载完成才能看到网页,其次是table的布局没有一定的语义,网页代码修改起来比较麻烦. 在写一些栏目块时,特别是数据分类较多,比如“求购信息”的栏目块,顶部可能出现“发布人.发布时间.信息标题.联系方式”等项目,像这样的地方建议还是要用table来写,因为table是专门用来写数据表格的,控制起来很方便,而且符合语义要求,还有页面中出现类似