display:table-cell布局

display:table-cell指让标签元素以表格单元格的形式呈现,使元素类似于td标签。IE8+及现代版本的浏览器都支持此属性,IE6/7不支持(可用其他方法实现类似效果)。同样,display:table-cell属性也会被float,position:absolute等属性破坏效果,所以尽量避免同时使用。

CSS display属性的表格布局相关属性的解释:

  • table 此元素会作为块级表格来显示(类似 ),表格前后带有换行符
  • table-row-group 此元素会作为一个或多个行的分组来显示(类似 )
  • table-header-group 此元素会作为一个或多个行的分组来显示(类似 )
  • table-footer-group 此元素会作为一个或多个行的分组来显示(类似 )
  • table-row 此元素会作为一个表格行显示(类似 )
  • table-column-group 此元素会作为一个或多个列的分组来显示(类似 )
  • table-column 此元素会作为一个单元格列显示(类似 )
  • table-cell 此元素会作为一个表格单元格显示(类似 和 )
  • table-caption 此元素会作为一个表格标题显示(类似 )

不过常用的就只用table和table-cell吧。

设置了display:table-cell的元素有一下特点:

  • 对宽度高度敏感
  • 对margin值无反应
  • 响应padding属性
  • 内容溢出时会自动撑开父元素

使用display:table-cell可以实现一下几种效果:

  1. 大小不固定元素的垂直居中
  2. 两列自适应布局
  3. 左右等高

1.大小不固定元素的垂直居中

效果:

<div class="content"><div style="height: 100px;width: 80px;background: #cccccc;"></div><div style="height: 120px;width: 80px;background: #639146;"></div><div style="height: 140px;width: 80px;background: #2B82EE;"></div><div style="height: 160px;width: 80px;background: #F57900;"></div><div style="height: 180px;width: 80px;background: #BC1D49;"></div><p style="width: 100px">顶顶顶顶顶</p><p style="width: 100px">顶顶顶顶顶顶顶顶顶</p>
</div>
    .content {display: table-cell;padding: 10px;border: 2px solid #999;height: 250px;vertical-align: middle;}.content div {display: inline-block;vertical-align: middle;}.content p {display: inline-block;vertical-align: middle;}

外层的div设置了display: table-cell;vertical-align: middle,内层的元素设置vertical-align: middle样式,内层的元素就会实现垂直居中,段落p也可以垂直居中。有时需要实现据居中效果是非常方便的。

2.两列自适应布局

想这种左边图片右边文字的布局真的很常见,实现起来也不难,可以左右浮动或者使用display:inline-block;等来实现,我感觉使用table-cell来做感觉更加简单。

<div class="content2"><div class="left-box"><img src="./img/shop3.jpeg" width="70"></div><div class="right-box">哈水水哈水水水水。。。。</div>
</div>
    .content2 {display: table;padding: 10px;width: 600px;border: 2px solid #999;}.left-box {float: left;margin-right: 10px;}.right-box {display: table-cell;padding: 10px;width: 2000px;vertical-align: top;border: 1px solid #ccc;}

最外层使用display: table,左边的图片使用左浮动来实现,右边文字部分使用table-cell样式,这样右边文字部分就像表格中的td一样,表格中的td的宽度是由内容撑开的,为了防止内容过少导致宽度很小的情况,就将右边内容部分的宽度设为一个很大的值,起到撑开断宽度的作用。

3.左右等高


这个很好理解,表格中每一行的高度都是相同的,这个其实就是模拟表格。

<div class="content3"><div class="box1">左右一样高</div><div class="box2">嘎嘎嘎嘎嘎嘎个哈哈哈哈哈哈。。。</div>
</div>
    .content3 {display: table;padding: 10px;border: 2px solid #999;}.box1 {display: table-cell;width: 100px;border: 1px solid red;}.box2 {display: table-cell;border: 1px solid red;}

我觉得平时比较想到会用table-cell的一般是在垂直居中上,两列自适应布局感觉挺方便的,以后有是相当的机会一定会用上的。

display:table-cell布局相关推荐

  1. css Table布局:基于display:table的CSS布局

    两种类型的表格布局 你有两种方式使用表格布局 -HTML Table(<table>标签)和CSS Table(display:table 等相关属性). HTML Table是指使用原生 ...

  2. 基于display:table的CSS布局

    CSS表格能够解决所有那些我们在使用绝对定位和浮动定位进行多列布局时所遇到的问题.例如,"display:table;"的CSS声明能够让一个HTML元素和它的子节点像table元 ...

  3. CSS的display的多种布局方式总结(inline-block,table,flex)

    1.display:inline-block布局 一:display的几个常用的属性值 inline(行内元素) 1.和其他元素都在一行上,可以与其他行内元素共享一行,不会独占一行 2.高,行高及顶和 ...

  4. 微信小程序之获取后台动态数据表格布局display:table

    微信小程序之获取后台动态数据表格布局display:table 猿来独往 2018-09-02 本文没有采用flex布局和grid布局来设置表格的,而是通过 display: table;来设置. 一 ...

  5. display:table的用法

    目前,在大多数开发环境中,已经基本不用table元素来做网页布局了,取而代之的是div+css,那么为什么不用table系表格元素呢? 1.用DIV+CSS编写出来的文件k数比用table写出来的要小 ...

  6. display:table和display:table-cell的妙用

    display的table和table-cell一般情况下用的不多,所以很少有人去关注它,但他们两个联手起来会给你惊喜! 这里抛出这样一个问题,如下,让块里的多行文字垂直居中?一说到垂直居中就会想到, ...

  7. display:table与本身的table的区别

    一.为什么不用table系表格元素? 目前,在大多数开发环境中,已经基本不用table元素来做网页布局了,取而代之的是div+css,那么为什么不用table系表格元素呢? 1.用DIV+CSS编写出 ...

  8. html —— table 标签 与 display:table 样式

    目录: 一.table 相关标签介绍及使用 二.div 布局设置display:table 一.table 相关标签介绍及使用 相关标签按包含关系从大到小排序: table --> col | ...

  9. CSS display:table

    概念 display:table可以在div等标签中实现表格的效果 display:table :相当于table标签 display:table-row :相当于tr标签 display:table ...

  10. CSS2中display:table属性的用法详解

    想必大家都已经知道了css属性display的一些常见属性值,比如none,block,inline-block等等,今日我在看一个效果代码的时候,碰到一个之前从未使用过的属性值,就是它了,displ ...

最新文章

  1. Android源码设计模式分析项目
  2. android4.0.3源码之鼠标光标绘制简略版
  3. Package Manager Console 向VS2010安装 EntityFramework
  4. mysql问题定位_十、MySQL的SQL优化之定位SQL的问题 - 系统的撸一遍MySQL
  5. 【IOS】集成zxing(二维码扫描)
  6. LeetCode 546. 移除盒子(DP)*
  7. 异构计算助力客户春节webp图片编码
  8. 问题六十四:怎么用C++实现二叉查找树(binary search tree)及其相关操作
  9. unique() 去重函数
  10. 下载赚钱利器之千脑网盘WordPress插件
  11. 有刷直流电机和无刷直流电机有什么区别?
  12. svn clean up 失败
  13. 汇编语言 程序设计 分支结构
  14. 第一个RDD,几个数据探查命令
  15. kali密码破解笔记
  16. 让你在[三分钟自我介绍]中突出自我
  17. 1.整理华子面经--1
  18. python 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出
  19. 一抹阳光,几缕思绪...
  20. html谷歌兼容代码,让网站变灰的css代码(支持IE、Firefox和Chrome)

热门文章

  1. 算法工程师,个人优缺点
  2. 解读即将施行的《网络安全审查办法》,开发者需要注意的
  3. VBA基础知识整理(文件操作)
  4. Navicat 连接Oracle数据库提示cannot create oci handles问题解决方法
  5. 沉静型人格分析,沉静型性格的职业发展
  6. AMBA总线介绍:搭建AMBA系统
  7. Ubuntu 14.04~14.10 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
  8. 计算机专业國際排名,美国普林斯顿大学计算机专业排名
  9. 【无人机】【2012.09】将无人驾驶飞机系统融入城市环境中的现代警务研究
  10. 软件测试等价类划分以及边界值