display:table-cell;这个属性用的不多,它和td差不多,但是如果可以用好还是能收益不少的,下面举例说明。

1. 父元素display:table-cell,并设置verticle-align:middle; 那么无论子元素是块级元素还是行内元素都可以做到垂直居中。

<!DOCTYPE html>
<html>
<head>
<title>fortest</title>
<style>
*{
margin:;
padding:;
}
.father{
height: 500px;
width: 500px;
/*position: relative;*/
display: table-cell;
/*text-align: center;*/
vertical-align: middle;
background-color: #ccc; }
.son{
width: 200px;
/*float: right;*/
/*position: relative;*/
/*position: absolute;*/
height: 200px;
vertical-align: middle;
background-color: red;
display:table-cell;
}
/* span{
position: absolute;
top:50%;
transform: translate(0,-50%);
}*/ </style>
</head>
<body>
<div class="father">
<div class="son"> <span>这是一段文字</span></div>
</div>
</body>
</html>

2.  即使父元素是display:table-cell,我们也不能给其设置text-align:center,  这个特点和块级元素时非常相似了。

3. 如果父元素设置为table-cell后,给其添加position:relative;属性,因为没有脱离文档流,所以没有影响,但是如果添加了position:absolute和position:fixed以及float属性,那么就会脱离文档流,这样即使设置了vertical-align:middle,其子元素也不能居中了,因为一旦一个元素添加了使其脱离文档流的属性,它就被破坏了,这是我们需要注意的地方。

<!DOCTYPE html>
<html>
<head>
<title>fortest</title>
<style>
*{
margin:;
padding:;
}
.father{
height: 500px;
width: 500px;
/*position: relative;*/
position: absolute;
display: table-cell;
/*text-align: center;*/
vertical-align: middle;
background-color: #ccc; }
.son{
width: 200px;
/*float: right;*/
/*position: relative;*/
/*position: absolute;*/
height: 200px;
vertical-align: middle;
background-color: red;
display:table-cell;
}
/* span{
position: absolute;
top:50%;
transform: translate(0,-50%);
}*/ </style>
</head>
<body>
<div class="father">
<div class="son"> <span>这是一段文字</span></div>
</div>
</body>
</html>

3. display:table-cell 的元素具有inline-block的特性,但也不全是。

  1.给一个元素设置为table-cell,不设置width和height,如:  

<!DOCTYPE html>
<html>
<head>
<title>fortest</title>
<style>
*{
margin:;
padding:;
}
div{
display: table-cell;
background-color: #ccc;
} </style>
</head>
<body>
<div>这是一段文字</div>
</body>
</html>

  这时可以发现效果如下:

  2. 但是我们又可以通过使用table-cell完成一个左边固定,右边自适应的布局,这时他的宽度就自适应了,如下所示:

<!DOCTYPE html>
<html>
<head>
<title>fortest</title>
<style>
*{
margin:;
padding:;
}
.father{
display: table;
width: %;
/* 注意:display:table;其width必须要设置,否则不会100% */
background-color: #ccc;
}
.left{
display: table-cell;
width: 300px;
height: 500px;
background-color: blue;
}
.right{
display: table-cell;
background-color: yellow;
} </style>
</head>
<body>
<div class="father">
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>

  补充:实现这种布局的方法还有:将子元素设置为固定的,并且float或者是position:absolute,这样就脱离文档流了,然后右边的div默认为auto, 再给右边的div一个margin-left即可。

  

再探display:table-cell &&左边固定、右边自适应的更多相关文章

  1. HTML布局之左右结构,左边固定右边跟据父元素自适应

    HTML布局之左右结构,左边固定右边跟据父元素自适应,兼容IE6+.Firefox.Chrome.Opera.Safari,这里是用表单写的一个demo,其实就在主体布局中也是可以的,比如像后台一些管 ...

  2. flex左右布局 左边固定 右侧自适应

    flex左右布局 左边固定 右侧自适应 想要保证自适应内容不超出容器怎么办. 通过为自适应的一侧设置width: 0;或者overflow: hidden;解决. 首先实现标题的布局,也很简单: &l ...

  3. css-两个div并排,左边宽度固定右边自适应的布局 的实现方法

    <div class= "container"> <div class="left"></div> <div clas ...

  4. css布局:左边固定宽度,右边自适应宽度或右侧固定,左侧自适应三种方法

    方法一:浮动布局 这种方法我采用的是左边浮动,右边加上一个margin-left值,让他实现左边固定,右边自适应的布局效果 HTML Markup <div id="left" ...

  5. 实现一个div,左边固定div宽度200px,右边div自适应

    实现一个div,左边固定div宽度200px,右边div自适应<div class= "container"> <div class="left&quo ...

  6. css网页布局 --- 左边固定,右边自适应

    div的布局统一如下: <body> <div class="wrap"> <div class="left"></d ...

  7. table左边固定-底部横向滚动条

    是日有需求,曾探讨过table表单头部.尾部固定不动,中间内容随着滚动条的滚动而变化. 整合资料之际,发现有很多表格,表单展现中,横向数据很多.很长,不方便查看. 则,横空霹雳出了,此款:table表 ...

  8. css 关于两栏布局,左边固定,右边自适应

    好几个星期都没写博客了,最近不忙也不闲,稀里糊涂过了两个星期,之前几个月内天天坚持签到.最近也没签到.哈哈,说正事. 今天做东钿互金平台后台页面,昨天做了一个登录页面,业偶碰到了一个难题.等下也要把它 ...

  9. 移动端list布局,左边固定,右边自适应

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

随机推荐

  1. 使用#include消除重复代码

    消除重复代码代码很多种,比如: 1)提炼成函数复用 2)使用宏 3)继承 4)使用闭包(boost::bind.boost::function) 上述是最为常用的,对于C++程序,闭包可能用得相对少一 ...

  2. Swift语法快速索引

    在WWDC的演示中就可以看出来Swift这个更接近于脚本的语言可以用更少的代码量完成和OC同样的功能.但是对于像我一样在战争中学习战争的同学们来说,天天抱着笨Swift Programming Lan ...

  3. ENVI 图像特征提取

  4. Transaction And Lock--由Lookup导致的死锁情况

    存在这样情况:1.表TB1有一列建立索引2.事务A对表进行更新,先获取对表的X锁以更新基本表中数据,然后对索引申请X锁以更新索引数据.3.事务B对表进行更新,先获取索引上S锁以使用索引进行Loopup ...

  5. Replication--镜像+复制

    场景:主服务器:Server1从服务器:Server2订阅服务器: Server3镜像DB: RepDB配置:1>配置SERVER3为分发服务器,在Server3上指定发布服务器SERVER1和 ...

  6. 查看iptables状态-重启

    iptables 所在目录 /etc/sysconfig/iptables service iptables status 查看iptables状态 service iptables restart ...

  7. GridView中合并单元格

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  8. Python【数据类型】

    本文介绍 1.什么是数据类型 2.Number类型 3.字符串类型 4.布尔类型 一.什么是数据类型 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又 ...

  9. C#中的线程

    1.线程Thread 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行:对于比较耗时的操作(例如io,数据库操作),或者等待响应(如WCF通信)的操作,可以单独开启后台线程来执行,这样主线程 ...

  10. 工作流2013 assign to问题

    根据您的确认, 该问题已经通过我们所提供的方案进行修改后测试通过, 问题解决. 以下为该问题的产生原因: SharePoint 2013使用的默认认证机制与2007不一样,  2007使用的是Wind ...