当我们进行浮动布局时,会发现存在着非浮动元素与浮动元素的底部难以对齐的情况,这就是浮动布局的缺陷。因此,过去的前端工作者曾利用<table>以实现“表格布局”。因为表格中同一行的单元格行高总是一致的,所以“表格布局”可以避免“浮动布局”时出现的“底部对不齐”情况,下面是经典的利用<table>实现“双栏布局”的框架:

<table>
<tr>
<td>
<!--左侧栏内容-->
</td> <td>
<!--右侧栏内容-->
</td>
</tr>
</table>

  但是随着HTML5的到来,HTML标签越来越强调“语义化”,即合理使用HTML标记以及其特有的属性去格式化文档内容。因此,利用<table>来实现“表格布局”是不推荐的,因为此时<table>中的内容并不是一个真的“表格”,不符合“语义化”的追求。那么,在追求语义化的时代,该如何实现传统的“表格布局”呢?那就是借助CSS来实现。

  利用CSS来实现“表格布局”很简单,第一步是把传统<table>布局中的<table>、<tr>、<td>改为合适的、符合“语义化”的标签,比如说上面的“双栏布局”改成这样:

<main>
<section>
<aside>
<!--左侧栏内容-->
</aside> <article>
<!--右侧栏内容-->
</article>
</section>
</main>

  然后为这些标签添加对应的display属性:

<main style="display:table">
<section style="display:table-row">
<aside style="display:table-cell">
<!--左侧栏内容-->
</aside> <article style="display:table-cell">
<!--右侧栏内容-->
</article>
</section>
</main>

  其实将上述代码与传统<table>布局的代码一对比,可以看出,变化之处就是:

  替换掉<table>的<main>有了一个“display:table”样式

  替换掉<tr>的<section>有了一个“display:table-row”样式

  替换掉<td>的<aside>和<article>分别有了一个“display:table-cell”样式。

  用CSS来替代<table>进行“表格布局”的思路是基本一致的,只是进一步将页面的结构与表现分离开来,这样做最大的好处就是可以使HTML标签尽量做到“语义化”。

用CSS实现“表格布局”的更多相关文章

  1. html/css 表格元素以及表格布局

    一,html之表格 1,一个完整的html表格所包含的元素 <!--一个完整的html表格--> <!--cellpadding代表单元格内的文字和单元格边框之间的间距--> ...

  2. 3月23.CSS表格布局

    360表格布局: CSS定义标签: @charset "utf-8";/* CSS Document */.bt1{ border:#309 solid 1px; height:1 ...

  3. 演示:纯CSS实现自适应布局表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 浅谈分析表格布局与Div+CSS布局的区别

    (1)表格布局 表格布局容易掌握,布局方便.但表格布局需要通过表格的间距或者使用透明的gif图片来填充布局板块间的间距,这样布局的网页中表格会生成大量难以阅读和维护的代码:而且表格布局的网页要等整个表 ...

  5. 基于CSS属性display:table的表格布局的使用

    项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的table表格,没有单元格的属性和样式,经过一番思考,曲折现实了单元格 ...

  6. CSS设置表格TD宽度布局

    使用表格布局时,对单元格的宽度控制很伤脑筋,所以查阅资料整理如下: 一.表格布局table-layout 语法: table-layout : auto | fixed 取值: auto  : 大多数 ...

  7. 【CSS】创建布局

    随着对分离HTML元素的语义重要性与其表现的影响的不断强调,CSS在HTML5元素布局方面的作用越来越重要. 1. 定位内容 控制内容最简单的方式就是通过定位,这允许你使用浏览器改变元素的布局方式. ...

  8. PHP.3-DIV+CSS标准网页布局准备工作(上)

    DIV+CSS标准网页布局准备工作(上) 概述 使用"DIV+CSS"对网站进行布局符合W3C标准,采用这种方式布局通常是为了说明与HTML表格定位方式的区别.因为现在的网站设计标 ...

  9. CSS Grid 网格布局全解析

    介绍 CSS Grid(网格) 布局使我们能够比以往任何时候都可以更灵活构建和控制自定义网格. Grid(网格) 布局使我们能够将网页分成具有简单属性的行和列.它还能使我们在不改变任何HTML的情况下 ...

随机推荐

  1. jQuery 文档操作方法 (四)

    方法 描述 addClass() 向匹配的元素添加指定的类名. after() 在匹配的元素之后插入内容. append() 向匹配元素集合中的每个元素结尾插入由参数指定的内容. appendTo() ...

  2. windows系统操作

    1.怎么更新补丁 有些软件的运行需要windows要安装相关的补丁,除了去微软官网下载补丁外,可以用windows自带的“系统更新”来完成,省去找补丁下载以及研究系统缺少哪些补丁. 控制面板--> ...

  3. Box布局

    import sys from PyQt4 import QtCore, QtGui class MainWindow(QtGui.QWidget): def __init__(self, paren ...

  4. 【Splay】bzoj1500(听说此题多码上几遍就能不惧任何平衡树题)

    1500: [NOI2005]维修数列 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 15112  Solved: 4996[Submit][Statu ...

  5. COM学习(四)——COM中的数据类型

    上一次说到,COM为了跨语言,有一套完整的规则,只要COM组件按照规则编写,而不同的语言也按照对应的规则调用,那么就可以实现不同语言间相互调用.但是根据那套规则,只能识别接口,并调用没有参数和返回类型 ...

  6. #pta循环作业

    7-7 计算阶乘和 1.题目 . 2.设计思路     此题目比一道类似的经典题目的区别就是不是直接的数字累加而是每次的数字先累乘之后再累加 只需要在累加之前处理一下所要加的数字就可以实现了 3.流程 ...

  7. java 读取数据库中文信息,为何在jsp页面中出现乱码

    有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...

  8. C#要点补充

    1字符串与时间的互转 DateTime.TryParse将空字符串.为null或格式不正确,则转换为的DateTime所代表的值为:0001/1/1 0:00:00,此为DateTime.MinVal ...

  9. jQuery之开关灯示例

    准备jquery-3.2.1.js文件 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  10. Angular17 Angular自定义指令

    1 什么是HTML HTML文档就是一个纯文本文件,该文件包含了HTML元素.CSS样式以及JavaScript代码:HTML元素是由标签呈现,浏览器会为每个标签创建带有属性的DOM对象,浏览器通过渲 ...