结合CSS3的新特性来总结垂直居中的实现方法


Posted in HTML / CSS onMay 30, 2016

0.单行内容的居中
只考虑单行是最简单的,无论是否给容器固定高度,只要给容器设置 line-height 和 height,并使两值相等,再加上 over-flow: hidden 就可以了

CSS Code复制内容到剪贴板
  1. .middle-demo-1{   
  2. height: 4em;   
  3. line-height: 4em;   
  4. overflowhidden;   
  5. }  

优点:
(1). 同时支持块级和内联极元素
(2). 支持所有浏览器
缺点:
(1). 只能显示一行
(2). IE中不支持<img>等的居中
要注意的是:
(1). 使用相对高度定义你的 height 和 line-height
(2). 不想毁了你的布局的话,overflow: hidden 一定要
为什么?
请比较以下两个例子:

XML/HTML Code复制内容到剪贴板
  1. <p style="background: #900; color: #00f; font: bold 12px/24px Helvertica,Arial,sans-serif; height:24px; width:370px;">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>  
  2. <br/>  
  3. <br/>  
  4. <p style="background: #090; color: #00f; font: bold 12px/2em Helvertica,Arial,sans-serif; height:2em; width:370px; overflow: hidden;">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>  

上一个高度是用的绝对单位px,并且没有隐藏溢出,下一个高度用的单位是相对单位em,并且隐藏了溢出。如果你的浏览器支持放大字体,那么尽情地放大字体,看看会出现什么效果。

1.使用position:absolute(fixed),设置left、top、margin-left、margin-top的属性;

CSS Code复制内容到剪贴板
  1. .box{   
  2.     position:absolute;/*或fixed*/  
  3.     top:50%;   
  4.     left:50%;   
  5.     margin-top:-100px;   
  6.     margin-left:-200px;   
  7. }  

2.利用position:fixed(absolute)属性,margin:auto这个必须不要忘记了;

CSS Code复制内容到剪贴板
  1. .box{   
  2.     positionabsolute;或fixed  
  3.     top:0;   
  4.     rightright:0;   
  5.     bottombottom:0;   
  6.     left:0;   
  7.     marginauto;   
  8. }  

3.利用display:table-cell属性使内容垂直居中;

CSS Code复制内容到剪贴板
  1. .box{   
  2.   
  3. display:table-cell;   
  4.   
  5. vertical-align:middle;   
  6.   
  7. text-align:center;   
  8.   
  9. width:120px;   
  10.   
  11. height:120px;   
  12.   
  13. background:purple;   
  14.   
  15. }  

4.使用css3的新属性transform:translate(x,y)属性;

CSS Code复制内容到剪贴板
  1. .box{   
  2.     positionabsolute;   
  3.     transform: translate(50%,50%);   
  4.     -webkit-transform:translate(50%,50%);   
  5.     -moz-transform:translate(50%,50%);   
  6.     -ms-transform:translate(50%,50%);   
  7. }  

5.最高大上的一种,使用:before元素;

CSS Code复制内容到剪贴板
  1. .box{   
  2.   
  3. position:fixed;   
  4.   
  5. display:block;   
  6.   
  7. background:rgba(0,0,0,.5);   
  8.   
  9. }   
  10.   
  11. .box:before{   
  12.   
  13. content:'';   
  14.   
  15. display:inline-block;   
  16.   
  17. vertical-align:middle;   
  18.   
  19. height:100%;   
  20.   
  21. }   
  22.   
  23. .box.content{   
  24.   
  25. width:60px;   
  26.   
  27. height:60px;   
  28.   
  29. line-height:60px;   
  30.   
  31. color:red;  

6.Flex布局;

CSS Code复制内容到剪贴板
  1. .box{   
  2.     display: -webkit-box;   
  3.     display: -webkit-flex;   
  4.     display: -moz-box;   
  5.     display: -moz-flex;   
  6.     display: -ms-flexbox;   
  7.     display: flex;   
  8.     水平居中   
  9.     -webkit-box-align: center;   
  10.     -moz-box-align: center;   
  11.     -ms-flex-pack:center;   
  12.     -webkit-justify-contentcenter;   
  13.     -moz-justify-contentcenter;   
  14.     justify-contentcenter;   
  15.      垂直居中    
  16.     -webkit-box-pack: center;   
  17.     -moz-box-pack: center;   
  18.     -ms-flex-align:center;   
  19.     -webkit-align-items: center;   
  20.     -moz-align-items: center;   
  21.     align-items: center;   
  22. }  
HTML / CSS 相关文章推荐
10个很棒的 CSS3 开发工具 推荐
May 16 HTML / CSS
使用CSS3编写类似iOS中的复选框及带开关的按钮
Apr 11 HTML / CSS
CSS3实现大小不一的粒子旋转加载动画
Apr 21 HTML / CSS
详解HTML5中的标签
Jun 19 HTML / CSS
HTML5的Geolocation地理位置定位API使用教程
May 12 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
Dec 13 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
Jan 30 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
May 14 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
Aug 21 HTML / CSS
详解淘宝H5 sign加密算法
Aug 25 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
Oct 12 HTML / CSS
CSS实现九宫格布局(自适应)的示例代码
Feb 12 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
May 26 #HTML / CSS
CSS中的字体大小设置属性总结
May 24 #HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 #HTML / CSS
轻松掌握CSS3中的字体大小单位rem的使用方法
May 24 #HTML / CSS
CSS3中的Media Queries学习笔记
May 23 #HTML / CSS
详解CSS3的perspective属性设置3D变换距离的方法
May 23 #HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 #HTML / CSS
You might like
第五节--克隆
2006/11/16 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php的常量和变量实例详解
2017/06/27 PHP
JS 树形递归实例代码
2010/05/18 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
vue实现弹幕功能
2019/10/25 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
python实现保存网页到本地示例
2014/03/16 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
python处理大数字的方法
2015/05/27 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
详解python字节码
2018/02/07 Python
Python Logging 日志记录入门学习
2018/06/02 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
keras topN显示,自编写代码案例
2020/07/03 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
如何客观的进行自我评价
2013/12/17 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
战马观后感
2015/06/08 职场文书
初中化学教学反思
2016/02/22 职场文书
一文搞懂Java中的注解和反射
2022/06/21 Java/Android