结合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中box属性中的overflow-x属性和overflow-y属性值的效果
Jul 21 HTML / CSS
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
Aug 08 HTML / CSS
纯css3实现的鼠标悬停动画按钮
Dec 23 HTML / CSS
纯css3实现走马灯效果
Dec 26 HTML / CSS
详解CSS3弹性伸缩盒
Sep 21 HTML / CSS
HTML5 Geolocation API的正确使用方法
Dec 04 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
Dec 31 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
Jun 27 HTML / CSS
HTML5本地存储之Web Storage详解
Jul 04 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
Aug 18 HTML / CSS
html5手机键盘弹出收起的处理
Jan 20 HTML / CSS
HTML5简单实现添加背景音乐的几种方法
May 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
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
Display SQL Server Version Information
2007/06/21 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python第三方库学习笔记
2020/02/07 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
见习期自我鉴定范文
2014/03/19 职场文书
报效祖国演讲稿
2014/09/15 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
项目安全员岗位职责
2015/02/15 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书