display:table-cell
布局神器display:table-cell


随着时间的推进,ie6、ie7在中国浏览器市场的占有率越来越低的情况,我现在工作的团队,经过用户访问数据,得知ie6、ie7的用户已经非常少的前提下,决定不在兼容ie6、ie7。正式在这个激动人心的决定后,让我对display:table-cell;这个属性有了更加深入的应用和理解。在ie8还必须兼容的pc端,它绝对是一个现代的布局神器。
我并不喜欢用float来做布局,因为它触发的问题比较多,例如要清除浮动,元素浮动后还会导致该元素脱离文档流,即使你清除float,该元素依旧是脱离文档流。
在需要兼容ie6、ie7的时代我也尽量避免使用float来布局,左右布局能用display:inline-block;布局我就用它来布局,但是还是无法完全不使用它,很多布局例如需要靠左和靠右的布局场景下就没办法不去使用float来布局。我现在切页面很少会去在ie下查看效果,大部分是通过chrome来进行调试的,等整个页面切好了,再用ie过一遍页面,大部分时候页面是没什么太多兼容问题,这或许多年来工作累积的经验使我写代码时避开了一些兼容坑,也可能是自己对盒模型摸索许久以来的一些经验。
废话不多说,下面直接看demo例子,好可以快速爱上display:inline-block;
元素两端对齐
第一个案例是让两个元素分别向左和向右对齐,如果是过去,我一定会用float来实现,但其实用table可以这么做:

自动平均划分每个小模块,使其一行显示
第二个案例我们先看看图:

遇到上面这种布局,一般会用float来做,或者把每个li设置成display:inline-block;来做,并且都要设置给他们设置一个宽度,而且最痛苦的是5个li如果你设置width:20%;他们一定会掉下来,如果li都设置成display:table-cell;就不会出现这种情况,即使不设置宽度他们也会在一行显示,你在加多一行他也不会掉下来,依旧会在一样显示。DEMO2
图片垂直居中于元素

有时候我们需要让图片垂直水平都居中于某个元素,用常规写法比较复杂,但用table-cell则相对简单:DEMO3
两box实现等高对齐

上图中的左侧的box的高度始终跟随右侧的box的高度变化而变化:DEMO4
上面的案例我故意不对右侧的box设置display:table-cell,只对左侧,所以就会出现左侧跟随右侧高度变化而变化,如果要实现不管两个box哪个高度产生变化另一个就跟随,只需要把右侧的box也设置成display:table-cell就可以实现了。
弹性、响应式布局
上面的demo中大家只要改变浏览器宽度就会发现他们其实都是会随高度变化自动变化高度的,其实上面内容我大部分没有设置绝对单位,即使设置了也只设置其中一个box另一个就让他去自适应父元素的剩余留下来的宽度,其实布局的时候设置宽度是一件很痛苦的事情,因为除了大量计算有时候可能在多浏览器下还算不准,可能你在chrome设好的宽度在ie下就坑爹了,要写hack才能解决。最后一个案例,据不靠谱的传言faceboox曾经也这么使用过:DEMO5

移动端布局因为有display:box这等属性,所以table-cell相对就排不上什么大用场,不过在移动端你要用table-cell也不是不可以,根据自己对属性的理解去使用就可以了。
转载请注明来自 520UED http://www.520ued.com/article/table-cell
display:table-cell的更多相关文章
- [转]基于display:table的CSS布局
当IE8发布时,它将支持很多新的CSS display属性值,包括与表格相关的属性值:table.table-row和table-cell,它也是最后一款支持这些属性值的主流浏览器.它标志着复杂CSS ...
- display:table的几个妙用:垂直居中、浮动……
一.为什么不用table系表格元素? 目前,在大多数开发环境中,已经基本不用table元素来做网页布局了,取而代之的是div+css,那么为什么不用table系表格元素呢? 1.用DIV+CSS编写出 ...
- css Table布局:基于display:table的CSS布局
两种类型的表格布局 你有两种方式使用表格布局 -HTML Table(<table>标签)和CSS Table(display:table 等相关属性). HTML Table是指使用原生 ...
- display:table
display:table的CSS声明能够让一个HTML元素和它的子节点像table元素一样.使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界.背景等样式,而不会产生因为使用了table那 ...
- display:table的用法
目前,在大多数开发环境中,已经基本不用table元素来做网页布局了,取而代之的是div+css,那么为什么不用table系表格元素呢? 1.用DIV+CSS编写出来的文件k数比用table写出来的要小 ...
- 使用display:table来解决一些问题
一直有,多栏的需求,当然用table布局,很快就做完了.不怎么喜欢用table,刚开始使用display:table,但是有一条老是不能达到我的效果,那就是有一行不固定宽度的时候,就不知道怎么处理,今 ...
- 垂直居中display:table;
父级元素 display:table: 子元素 display:table-cell:vertical-align:middle:
- CSS display:table属性用法- 轻松实现了三栏等高布局
display:table:此元素会作为块级表格来显示(类似 <table>); display:table-cell属性指让标签元素以表格单元格的形式呈现,类似于td标签.目前IE8+以 ...
- display:table 水平居中
<div style="width:auto; margin:auto;display:table"> <div style="width: 100px ...
- display:table表格合并单元格
直接上代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...
随机推荐
- springMVC的配置文件路径问题
① <init-param> <param-name>contextConfigLocation</param-name> <param-value>c ...
- C#数字日期装换为中文日期
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- smali调试总结
一. 开始调试 smali调试从最早的重打包用各种JAVA IDE进行调试, 到后来的可以不用重打包用xposed插件, 在到最后的修改系统源码刷机或者修改boot.img刷机一劳永逸 apk可调试可 ...
- xtrabackup 使用说明(续)
背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:xtrabackup 安装使用.现在xtrabackup版本升级到了2.4.4,相比之前的2.1有了比较大的变化:in ...
- 如何解决System.Web.HttpRequestValidationException的异常
在.net framework 4.0版本以下, 只需要在web.config中进行如下配置: <configuration> <system.web> & ...
- python之路:Day02 --- Python基础2
本节内容 1.列表操作 2.元组操作 3.字符串操作 4.字典操作 5.集合操作 6.文件操作 7.字符编码与转换 一.列表操作 定义列表 names = ['Ming',"Hua" ...
- div不换行_div同行_div强制不换行
使用Float <!--已知两个div的宽度使用[Float]使两个DIV同行!注:float使用后需要清除:所以多写一个div--> <div style="width: ...
- 解决浏览器Adobe Flash Player不是最新版本问题
关键:选择谷歌浏览器的PPAPI版本的flash下载直接安装即可 搜索: Adobe Flash Player PPAPI 下载地址: http://www.wmzhe.com/soft-30259. ...
- Html和CSS布局技巧
单列布局水平居中 水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍四种实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的 ...
- 组合模式/composite模式/对象结构型模式
组合模式/composite模式/对象结构型 意图 将对象组合成树形结构以表示"整体--部分"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 动机 C ...