结合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 相关文章推荐
CSS3样式linear-gradient的使用实例
Jan 16 HTML / CSS
细说CSS3中的选择符
Oct 17 HTML / CSS
css3 pointer-events 介绍详解
Sep 18 HTML / CSS
CSS3 中filter(滤镜)属性使用详解
Apr 07 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
Nov 16 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
Jul 20 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
Feb 28 HTML / CSS
HTML5视频播放插件 video.js介绍
Sep 29 HTML / CSS
HTML5 图片预加载的示例代码
Mar 25 HTML / CSS
CSS 实现角标效果的完整代码
Jun 28 HTML / CSS
纯CSS打字动画的实现示例
Aug 05 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
php的正则处理函数总结分析
2008/06/20 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
python代码过长的换行方法
2018/07/19 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
浅析NumPy 切片和索引
2020/09/02 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
IRO美国官网:法国服装品牌
2018/03/06 全球购物
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
初中重阳节活动总结
2015/05/05 职场文书
二婚主持词
2015/06/30 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
Python中else的三种使用场景
2021/06/16 Python