概述

之前工作中碰到了一个垂直居中问题,最后通过查资料利用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. 直接插入排序(js版)

    直接插入排序(从小到大) 基本思想:将一个记录插入到已经排好序的有序表中,得到一个新的,记录数加1的有序表. function insertSort(arr){ var i,j,temp=0; for ...

  2. centos 添加右键在终端打开

    yum -y install nautilus-open-terminal

  3. CentOS升级OpenSSL至OpenSSL 1.1.0f版本<其中有遇到libcrypto.so的问题>

    概述: 整体步骤如下: 1.先检查版本 2.进行安装 <安装采用源码安装,然后再做相关的链接指向> 一.检查当前环境 1. 查看当前版本 openssl version 或者使用 yum ...

  4. python数据结构(二)------列表

    本文将重点梳理列表及列表操作. 2.1 list函数 2.2 基本列表操作 2.3 列表方法 2.1 list函数 >>>list('hello') ['h','e','l',l', ...

  5. MVC Razor视图下ViewData传递html内容被转义

    页面输出: html源码: <div style="width: 90%; height: auto;"> <p>付凯航 阿豆 ADOU</p> ...

  6. Java程序简介

    ---恢复内容开始--- java程序的基本构成: HelloDate.java package 语句 import 语句 类定义 -class 一个文件只能有一个public 类 (与文件同名) 类 ...

  7. Chapter6_访问权限控制_类的访问权限

    在Java中,访问权限修饰词也可以用于确定库中的哪些类对于该库的使用者是可用的,类既不可以是private也不可以是protected的,对于类的访问权限,只有两种选择:包访问权限或者public.下 ...

  8. 描点的改进:运用chart画图。

    主要是利用Chart画图: 通过选中一部分曲线进行图像的放大和缩小,最小值为1格. 先计算最大值和最小差值.然后赋值给AxisY.Minimum 和AxisY.Maximum.x轴初始显示数目:Axi ...

  9. Windows端口开放

    1.查看:cmd->netstat -na: 2.测试:cmd->telnet [ip] [port]: 3.开启:防火墙新建规则.

  10. 从React组件划分的纠结到总结

    在实际开发项目中,我将所有的React组件划分为容器组件和展示组件,展示组件其实就是一个纯函数组件,没有任何副作用,基本都是PureComponent.但是突然,出现了这么一个问题: 我有一个浮层组件 ...