概述

之前工作中碰到了一个垂直居中问题,最后通过查资料利用table-cell解决。于是打算总结一下有关table-cell的应用,记录下来,供以后开发时参考,相信对其他人也有用。

参考资料:我所知道的几种display:table-cell的应用

一行或多行文字垂直居中

比如有这样一个需求:框内的文字水平居中,垂直居中,并且当文字很多时,自动变成多行,并且变成多行后仍然是水平居中,垂直居中的。

一般情况下,我们可以用以下代码来实现:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
div {
display: table-cell;
width: 200px;
height: 100px;
font-size: 30px;
border:4px solid #beceeb; text-align: center;
vertical-align: middle;
}
span {
display: inline-block;
vertical-align: middle;
}
</style>
</head>
<body>
<div>
<span>我的字很少</span>
</div>
<div>
<span>我是很多行很多字</span>
</div>
</body>
</html>

但是如果我们需要父容器是块级元素,或者父容器浮动,那么用上面的办法就不行了,这个时候可以用display: table来实现,比如下面的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
div {
display: table;
width: 200px;
height: 100px;
font-size: 30px;
border:4px solid #beceeb; text-align: center;
vertical-align: middle;
float: left;
}
span {
display: table-cell;
vertical-align: middle;
}
</style>
</head>
<body>
<div>
<span>我的字很少</span>
</div>
<div>
<span>我是很多行很多字</span>
</div>
</body>
</html>

另外需要注意的是,如果里面的文字是一串很长的单词,那么有可能会超出父容器的宽度,这个时候需要添加word-break: break-all;来实现了。

左边宽度固定,右边宽度自适应

有这样一个需求:父元素宽度不定,它有2个子元素,子元素在同一行,左边的子元素宽度固定,右边的子元素宽度自适应。

这里左边的子元素肯定会用浮动,如果右边的元素设置display: block;的话,右边的子元素会包括左边的子元素。但是如果设置display: table-cell的话,就不会了,如下面的代码所示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.box{width:60%; margin:60px auto 0; padding:20px; background:#f5f5f5;overflow: hidden;}
.girl-img {float:left; width: 100px;}
.content{display: table-cell;}
</style>
</head>
<body>
<div class="box f9 fix">
<a href="#prettyGirl" class="girl-img"><img border="0" src="https://image.zhangxinxu.com/image/study/s/s128/mm2.jpg" /></a>
<div class="content">
<p><a href="#prettyGirl">大美女一枚</a> 来自上海</p>
<p class="mt5">签名:想找个保鲜盒把你给我的那些感动都装起来。当你让我伤心的时候就拿出来回味一下。</p>
<p class="mt5">微博:坐在办公室,只听轰隆隆几声巨响,晴天也能打雷吗?原来街对面的芭莎咖啡厅被炸成了两截。这定点爆破也太失败了,也不清下场,把路过的汽车震得灰头土脸,愣在路中央不知如何是好。其次,房子只炸了一半,另一半屹立不倒,是乍药太水还是房子质量太好?</p>
</div>
</div>
</body>
</html>

值得一提的是,bootstrap里面的输入框组input-group就用到了这种布局。

其它

table-cell还可以实现很多其它布局,但是那些布局不用table-cell一样也可以实现,所以我这里就不一一列出来了。

display: table-cell的实用应用的更多相关文章

  1. [转]基于display:table的CSS布局

    当IE8发布时,它将支持很多新的CSS display属性值,包括与表格相关的属性值:table.table-row和table-cell,它也是最后一款支持这些属性值的主流浏览器.它标志着复杂CSS ...

  2. display:table的几个妙用:垂直居中、浮动……

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

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

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

  4. display:table

    display:table的CSS声明能够让一个HTML元素和它的子节点像table元素一样.使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界.背景等样式,而不会产生因为使用了table那 ...

  5. display:table的用法

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

  6. 使用display:table来解决一些问题

    一直有,多栏的需求,当然用table布局,很快就做完了.不怎么喜欢用table,刚开始使用display:table,但是有一条老是不能达到我的效果,那就是有一行不固定宽度的时候,就不知道怎么处理,今 ...

  7. 垂直居中display:table;

    父级元素 display:table: 子元素 display:table-cell:vertical-align:middle:

  8. CSS display:table属性用法- 轻松实现了三栏等高布局

    display:table:此元素会作为块级表格来显示(类似 <table>); display:table-cell属性指让标签元素以表格单元格的形式呈现,类似于td标签.目前IE8+以 ...

  9. display:table 水平居中

    <div style="width:auto; margin:auto;display:table"> <div style="width: 100px ...

  10. display:table表格合并单元格

    直接上代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...

随机推荐

  1. Centos7 优盘U盘安装以及解决安装时引导错误

    一.使用UltraISO将安装镜像iso文件,写入优盘(写入硬盘映像).将优盘盘符名改为CENTOS7,否则以后引导很麻烦二.将优盘插入要安装CentOS7的电脑,设置开机U盘启动三.并启动到安装界面 ...

  2. C#smtp邮件消息提醒的一些bug总结

    软件通过检测公众号的某些链接是否异常发邮件提醒.. 1:网上找了些方法有说ssl  system.net.mail 不支持 ,这种说法是有问题的,其方法内设置的验证账号写成了邮箱的地址而不是账号也就是 ...

  3. 探索未知种族之osg类生物---渲染遍历之器官协作

    好了,现在我们经过三节的介绍我们已经大体上明确了单线程模型(SingleThreaded)下 OSG 渲染遍历的工作流程.事实上无论是场景的筛选render还是绘制cull工作,最后都要归结到场景视图 ...

  4. 网址导航18B

    [名站] 百度 网易 腾讯 新华 中新 凤凰 [新闻] 联合早报  南方周末  澎湃新闻 [系统] 宋永志 蒲公英 技术员 秋叶系统 装机网 系统之家 [软件] 星愿浏览器 暴风激活 贱人工具箱 微P ...

  5. 服务管理之NFS

    目录 NFS简介 1.1 nfs特点 1.4 nfs的应用场景 4. nfs管理 NFS简介 1.1 nfs特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的 ...

  6. PostgreSQL时间段查询

    1.今日 select * from "表名" where to_date("时间字段"::text,'yyyy-mm-dd')=current_date 2. ...

  7. dubbo入门学习 四 注册中心 zookeeper入门

    一.Dubbo支持的注册中心 1. Zookeeper 1.1 优点:支持网络集群 1.2 缺点:稳定性受限于Zookeeper 2. Redis 2.1 优点:性能高. 2.2 缺点:对服务器环境要 ...

  8. vue框架中的日期组件转换为yyy-mm-dd格式

    最近在用vue框架写一个app,这个是用到的日期格式转换,把下面的标准格式转换为字符串连接格式

  9. 口试Linq题

    LINQ to SQL与IQueryable 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列. LINQ to Object和LINQ to SQL有何区别 ...

  10. eclipse新建servers时选中tomcat版本后next是灰色的解决

    有时在编辑器里删除server后就不能重新new了,因为不能点next. 试了下面的方法,可以用. 1.退出2.到[工程目录下]/.metadata/.plugins/org.eclipse.core ...