结合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 相关文章推荐
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
css3的transform造成z-index无效解决方案
Dec 04 HTML / CSS
6种非常炫酷的CSS3按钮边框动画特效
Mar 16 HTML / CSS
CSS3 Notes: -webkit-box-reflect实现倒影的实例
Dec 08 HTML / CSS
CSS3实现彩色进度条动画的示例
Oct 29 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
Html5无刷新修改browser Url的方法
Jan 15 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
Mar 19 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
Jul 29 HTML / CSS
详解如何使用rem或viewport进行移动端适配
Aug 14 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
Sep 10 HTML / CSS
css样式important规则的正确使用方式
Jun 10 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
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
python实现绘制树枝简单示例
2014/07/24 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
如何对python的字典进行排序
2020/06/19 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
简历中求职的个人自我评价
2013/12/03 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
企业领导对照检查材料
2014/08/20 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
世界文化遗产导游词
2019/08/07 职场文书
python关于集合的知识案例详解
2021/05/30 Python
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android