CSS垂直居中总结

原文:CSS垂直居中总结

  工作中遇到垂直居中问题,特此总结了一下几种方式与大家分享。本文讨论的垂直居中仅支持IE8+

  1、使用绝对定位垂直居中

                <div class="container"><!--<div class="floater"></div>--><div class="center absolute_center">生活不能等待别人来安排,要自已去争取和奋斗;<br>而不论其结果是喜是悲,但可以慰藉的是,你总不枉在这世界上活了一场。<br>有了这样的认识,你就会珍重生活,而不会玩世不恭;同时,也会给人自身注入一种强大的内在力量。</div></div>    
HTML结构

  绝对对位原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。

.absolute_center{/*display:none;*/position:absolute;width:200px;height:200px;top:0;bottom:0;left:0;right:0;margin:auto;background:#518fca;resize:both;/*用于设置了所有除overflow为visible的元素*/overflow:auto;}
生活不能等待别人来安排,要自已去争取和奋斗;
而不论其结果是喜是悲,但可以慰藉的是,你总不枉在这世界上活了一场。
有了这样的认识,你就会珍重生活,而不会玩世不恭;同时,也会给人自身注入一种强大的内在力量。

   使用绝对定位要求元素必须设置明确高度。内容超过元素高度时需要设置overflow决定滚动条的出现

  优点:支持响应式,只有这种方法在resize之后仍然垂直居中

  缺点:没有显式设置overflow时,内容超过元素高度时会溢出,没有滚动条

  

   2、负marginTop方式

  已知元素高度后,使用绝对定位将top设置为50%,mergin-top设置为内容高度的一半(height + padding) / 2;内容超过元素高度时需要设置overflow决定滚动条的出现

  原理:top:50%元素上边界位于包含框中点,设置负外边界使得元素垂直中心与包含框中心重合;

                .negative_margin_top{position:absolute;top:50%;left:0;right:0;margin:auto;margin-top:-100px; /*-(height+padding)/2*/width:200px;height:200px;}    
生命里有着多少的无奈和惋惜,又有着怎样的愁苦和感伤?
雨浸风蚀的落寞与苍楚一定是水,静静地流过青春奋斗的日子和触摸理想的岁月。

   优点:代码量少、浏览器兼容性高支持ie6 ie7

  缺点:不支持响应式(不能使用百分比、min/max-width)

 

   3、借助额外元素floater

   元素高度已知,在center元素外插入一个额外元素floater,设置floater的height为50%;margin-bottom为center元素高度的一半(height + padding) / 2。内容超过元素高度时需要设置overflow决定滚动条的出现。

  原理与2方法类似,floater的下边界是包含框的中心线,负下外边界保证center的中心线与包含框中心线重合。

<div class="container"><div class="floater"></div><div class="center floater_center">人和社会,一切斗争的总结局也许都是中庸而已。<br>与其认真,不如随便,采菊东篱下,悠然见南山。有钱就寻一醉,无钱就寻一睡,与过无争,随遇而安。</div></div>
View Code
            .floater{height:50%;margin-bottom:-100px;}.floater_center{height:200px;width:200px;margin:auto;}
人和社会,一切斗争的总结局也许都是中庸而已。
与其认真,不如随便,采菊东篱下,悠然见南山。有钱就寻一醉,无钱就寻一睡,与过无争,随遇而安。  

   优点:浏览器兼容性好,支持旧版本ie

  缺点:需要额外元素,不支持响应式

 

   4、table-cell方式

  将center元素的包含框display设置为table,center元素的display设置为table-cell,vertical-align设置为middle。

  原理:利用表布局特点,vertical-align设置为middle后,单元格中内容中间与所在行中间对齐

<div class="container2"><!--<div class="floater"></div>--><div class="center table_cell">生命里有着多少的无奈和惋惜,又有着怎样的愁苦和感伤?<br>雨浸风蚀的落寞与苍楚一定是水,静静地流过青春奋斗的日子和触摸理想的岁月。</div></div>
View Code
        .container2{display:table;height:100%;}.table_cell{/*将cell垂直居中,如果外层div不为table则tablecell必须有高度*/display:table-cell;vertical-align:middle;}
生命里有着多少的无奈和惋惜,又有着怎样的愁苦和感伤?
雨浸风蚀的落寞与苍楚一定是水,静静地流过青春奋斗的日子和触摸理想的岁月。

   优点:支持任意内容的可变高度、支持响应式

  缺点:每一个需要垂直居中的元素都会需要加上额外标签(需要table、table-cell两个额外元素)

   

  5、inline-block方式

  将center元素display设置为inline-block,vertical-align设置为middle,为包含框设置after伪元素,将伪元素display设置为inline-block,vercial-align设置为middle,同时设置height为100%,撑开容器。

  原理:为同一行的inline-block元素设置vertical-align:middle,该行内的inline-block元素会按照元素的垂直中心线对齐。

        <div class="container"><!--<div class="floater"></div>--><div class="center inline_block">生命里有着多少的无奈和惋惜,又有着怎样的愁苦和感伤?<br>雨浸风蚀的落寞与苍楚一定是水,静静地流过青春奋斗的日子和触摸理想的岁月。</div></div>
View Code
        .container{display:block;}/*inline-block的前世今生*/.container:after{content: '';display: inline-block;vertical-align: middle;height: 100%;}.inline_block{display:inline-block;vertical-align:middle;}
生命里有着多少的无奈和惋惜,又有着怎样的愁苦和感伤?
雨浸风蚀的落寞与苍楚一定是水,静静地流过青春奋斗的日子和触摸理想的岁月。

   优点:支持响应式、支持可变高度

  缺点:会加上额外标记

  

  6、line-height方式

  该方式只适用于情况比较简单的单行文本,将line-height设置与元素高度同高。

  原理:如果line-height高度大于font-size,生于高度浏览器会平分到文字上下两端。

            <div class="single_line">其实我们每个人的生活都是一个世界,即使最平凡的人也要为他生活的那个世界而奋斗。</div>
            .single_line{height: 30px;font-size: 14px;line-height: 30px;border: 1px solid #518dca;}
其实我们每个人的生活都是一个世界,即使最平凡的人也要为他生活的那个世界而奋斗。

   优点:简单明了

  缺点:只适用于单行文本,局限性大

 

  7、弹性盒式布局

  利用弹性盒式布局,将字元素的主轴、侧轴的排列方式都设置为居中对齐

  原理:使用CSS弹性盒

        <div class="container is-Flexbox"><div class="center">既要脚踏实地于现实生活,又要不时跳出现实到理想的高台上张望一眼。<br>在精神世界里建立起一套丰满的体系,引领我们不迷失不懈怠。<br>待我们一觉醒来,跌落在现实中的时候,可以毫无怨言地勇敢地承担起生活重担。<br>这是孙少平教给我的道理。 <br>只能永远把艰辛的劳动看做生命的必要,即使没有收获的指望,也心平气静地继续耕种。<br>要做到这一点,路还好长。</div></div>
View Code
.is-Flexbox {display: -webkit-box;display: -moz-box;display: -ms-flexbox;display: -webkit-flex;display: flex;-webkit-align-items: center;align-items: center;-webkit-justify-content: center;justify-content: center;
}
既要脚踏实地于现实生活,又要不时跳出现实到理想的高台上张望一眼。
在精神世界里建立起一套丰满的体系,引领我们不迷失不懈怠。
待我们一觉醒来,跌落在现实中的时候,可以毫无怨言地勇敢地承担起生活重担。
这是孙少平教给我的道理。
只能永远把艰辛的劳动看做生命的必要,即使没有收获的指望,也心平气静地继续耕种。
要做到这一点,路还好长。

   优点:真正的垂直居中布局

   缺点:ie11才开始支持弹性布局

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单元测试代码:SpringTest+JUnit

2019独角兽企业重金招聘Python工程师标准>>> /*** JUnit单元测试父类&#xff0c;配置了Spring的基础环境。 <br/>* 可以作为Controller、Service、Dao单元测试的父类。* * author leiwenfansunion.cn*/ public class JUnitTestBase {public static XmlWebApp…

Java中发邮件的6种方法

2019独角兽企业重金招聘Python工程师标准>>> 1.官方标准JavaMail Sun&#xff08;Oracle&#xff09;官方标准&#xff0c;功能强大&#xff0c;用起来比较繁琐。 官方资料&#xff1a;http://www.oracle.com/technetwork/java/javamail/index.html 2.第三方实现…

用mongo实现mysql视图_浅谈 MongoDB 的视图

2018 年 9 月 18 日&#xff0c;由 Robert Gravelle 撰写在关系数据库中&#xff0c;视图是由查询定义的可搜索数据子集。视图有时被称为“虚拟表”&#xff0c;因为它们不存储数据&#xff0c;但可以像表一样被查询。MongoDB 最近在版本 3.4 中引入了视图。在今天的文章中&…

java char 空_2020重新出发,JAVA入门,数据类型

数据类型通过上一节&#xff0c;明白了变量就是申请内存来存储值&#xff0c;即当创建变量的时候&#xff0c;需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间&#xff0c;确定了变量的类型&#xff0c;即确定了数据需分配内存空间的大小&#xff0c;数据…

实验一报告

北京电子科技学院&#xff08;BESTI&#xff09; 实 验 报 告 课程&#xff1a;Java   班级&#xff1a; 1352    姓名&#xff1a;谈愈敏   学号&#xff1a;20135220 成绩&#xff1a;   指导教师&#xff1a;娄嘉鹏       实验日期…

mysql中下杠怎么打_怎么打字母下方的短横杠?,下横杠怎么打

下横杠怎么打,怎么打字母下方的短横杠?对于电脑操作&#xff0c;大多数成年人不及现在的孩子们。今天看到同事在编辑一篇文档&#xff0c;需要在字母下面打一条短横杠&#xff0c;如下图所示。但是同事怎么也打不出来&#xff0c;坐在旁边的他的孩子&#xff0c;看着有点不耐烦…

云计算解决方案——电信行业

2019独角兽企业重金招聘Python工程师标准>>> 云计算解决方案——电信行业 由于业务的快速发展&#xff0c;电信运营商每年要采购大量的服务器和存储设备&#xff0c;这些资源闲置或者偶尔被使用&#xff0c;造成大量的投资浪费。解决这一问题最好的方法是在企业内部…

华硕主板装系统蓝屏_华硕笔记本电脑重装系统后蓝屏怎么办

华硕笔记本电脑重装系统后蓝屏怎么办?笔记本重装系统后蓝屏怎么办&#xff0c;之前笔记本系统很慢很慢&#xff0c;想重新安装一下操作系统&#xff0c;重新安装的是Windows 7的系统&#xff0c;使用的是Ghost系统盘&#xff0c;为什么重新安装玩系统之后蓝屏了&#xff0c;其…

[LeetCode]LRU Cache有个问题,求大神解答【已解决】

题目&#xff1a; Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise ret…

从CentOS6.0i386到CentOS6.6x86-64,搬家中,磕磕跘跘,各种折腾……

2019独角兽企业重金招聘Python工程师标准>>> 原本打算从 CentOS 6.0 i386 蹦到 CentOS 7.1 x86-64 &#xff0c;结果声卡一灵九不灵的问题没解决。决定退到 CentOS 6.6 x86-64 。 装好 CentOS 6.6 x86-64 &#xff0c;原生创建的用户 guest 貌似没啥问题。但直接迁…

java程序源代码如何保存到桌面_如何编写JAVA小白第一个程序

学习上一篇文章之后&#xff0c;确定好JDK和环境变量都成功之后&#xff0c;我们来编写我们第一个java程序命名为HelloWorld.java。上一篇文章链接&#xff1a;JDK下载与环境变量的安装桌面上右击&#xff0c;新建一个文本文档用记事本打开文本文档编写如上图代码&#xff0c;注…

matlab图像输出表格_matlab 图像输出3维字

废话不多说。strE; scale10; % 绘制 3D 文字 new_fig figure(visible,on); word_handle text(0.01,0.5,str,... fontsize,200,... fontweight,bold,... fontunits,normalized); axis off set(gcf,PaperPosition,[0 0 8 8],PaperUnits,normalized) % saveas(gca,[pwd 1.png])…

mysql注册成功为啥启动不了mysql_mysql启动不成功的解决方法

1.net start mysql提示服务名无效原因&#xff1a;mysql服务没有安装。解决方法&#xff1a;2. 以管理员身份运行cmd。window键R 输入cmd3. 切换到 mysql.exe 的文件位置的路径我的文件路径是 D:D:\Mysql\mysql-5.7.16-win32\bin4、输入mysql.exe -install 回车如上图显示就表示…

NoSQL数据库:数据的一致性

NoSQL数据库&#xff1a;数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点&#xff0c;得到的数据结果一致&#xff1b; 用户一致性 对同一用户&#xff0c;访问集群期间得到的数据一致&#xff1b; 解决用户一致性&#xff1a;使用粘性会话&#xff0c;将会话…

基于Apache OLTU的OAuth2.0授权解决方案

Apache OLTU实现了OAuth 2.0的规范&#xff0c;是一种可靠的Java授权解决方案。但是&#xff0c;官方文档实在是太惨不忍睹了。本文参考了开涛的OAuth 2.0集成Shiro文章。模拟了OAuth2.0的认证流程。技术框架&#xff1a;SpringSpringMVCApache OLTUAmazonUI.界面效果&#xff…

小程序转h5之后 vant文件查找失败:_你还在使用原生开发小程序吗

最近帮别人在做一个小程序,因为官方的支持不够好,组件库也不够多,所以就没有使用官方的操作。网上查找了一番&#xff0c;觉得mpvue还不错&#xff08;之前也没玩过&#xff09;&#xff0c;索性拿来用吧&#xff01;01 前言小程序的做法也是比较简单的&#xff0c;假如你是老手…

JQUERY插件JqueryAjaxFileUplaoder----更简单的异步文件上传

异步上传相信大家都做过类似的功能&#xff0c;JqueryAjaxFileUploader为我们提供了更简单的实现和使用方式。不过既然是JQUERY的插件那么它所依赖的环境大家都懂得。JqueryAjaxFileUploader并不华丽&#xff0c;也没有提供美化文件上传控件的css&#xff0c;它并不像jQuery Fi…

替换WordPress调用的Google前端库为360镜像的库

为什么80%的码农都做不了架构师&#xff1f;>>> 把 googleapis 替换成 useso 即可: sed -i s/googleapis/useso/g grep -rl googleapis ./wordpress 另外在后台关闭Gravatar头像显示(设置-讨论-头像显示),免得拖慢页面加载速度. 要成倍提升WordPress速度,可以考虑使…

IOS模拟器调试ANE

来源&#xff1a;http://www.tuicool.com/articles/AFRJzi 利用iOS模拟器来检测和调试AIR应用程序补充篇 Air3.4来了 除去可以直接往模拟器里面部署应用&#xff0c;还可以往真机里面部署应用。 Air3.3的时候非常苦逼&#xff0c;你只能往模拟器里面装应用而不能删除&#xff0…

python开源考试_可能是 Python 中最火的第三方开源测试框架 pytest

作者&#xff1a;HelloGitHub-Prodesire一、介绍本篇文章是《聊聊 Python 的单元测试框架》的第三篇&#xff0c;前两篇分别介绍了标准库 unittest 和第三方单元测试框架 nose。作为本系列的最后一篇&#xff0c;压轴出场的是Python 世界中最火的第三方单元测试框架&#xff1a…