一、碎碎念:啊啊啊,原谅我只能起一个酱紫微大众微俗气的标题,因为实在没有什么能比这样表达的更清楚直观了呢!

二、没有知识储备,直接上示例:

1、思路:给父元素添加display: table属性;给子元素添加display: table-cell,并且需要设置vertical-align: middle;(说明:适用于单行,多行文字)

html:

 //单行居中
<div class="wapper">
<p class="child">听说白雪公主在逃跑 小红帽在担心大灰狼 听说疯帽喜欢爱丽丝 丑小鸭会变成白天鹅</p>
</div>
//多行居中
<div class="wapper">
<div class="child">
  <p>听说白雪公主在逃跑 小红帽在担心大灰狼 听说疯帽喜欢爱丽丝 丑小鸭会变成白天鹅</p>
  <p>听说彼得潘总长不大 杰克他有竖琴和魔法 听说森林里有糖果屋 灰姑娘丢了心爱的玻璃鞋</p>
  <p>只有睿智的河水知道 白雪是因为贪玩跑出了城堡 小红帽有件抑制自己 变成狼的大红袍</p>
</div>
</div>

css:

 <style type="text/css">
*{
margin:;
padding:;
}
body{
font-family: 'microsoft yahei';
}
.wapper{
width: 100%;
height: 500px;
background-color: #f7f7f7;
display: table;
text-align: center;
}
.wapper .child{
display: table-cell;
vertical-align: middle;
}
</style>

效果图:

2、思路:使用line-height属性,将文字的行高设置成和父元素一样高的时候,单行文字会垂直居中(说明:只适用于单行文字)

html同上

css

 <style type="text/css">
*{
margin:;
padding:;
}
body{
font-family: 'microsoft yahei';
}
.wapper{
width: 100%;
height: 500px;
background-color: #f7f7f7;
text-align: center;
}
.wapper .child{
line-height: 500px;
}
</style>

3、思路:利用padding或者margin来实现居中,比如父元素高度不固定,我可以给子元素设置margin上下边距相等,或者给父元素设置padding上下相等,即可得到子元素垂直居中的效果;父元素高度固定的时候,比如上边的例子,wapper高度为500px,这时候就需要我们计算一下子元素的高度,设置边距=(父元素高-子元素高)/2,这个得到的值就是子元素的margin-top值,或是父元素的padding-top值。

html同上

css

 <style type="text/css">
*{
margin:;
padding:;
}
body{
font-family: 'microsoft yahei';
}
.wapper{
width: 100%;
height: 500px;
background-color: #f7f7f7;
text-align: center;
overflow: hidden;
}
.wapper .child{
line-height:;
font-size: 14px;
margin-top: 243px; //(500-14)/2 = 243
}
</style>

效果:思路就是这个样子的思路,实际的效果是和我们预期的有偏差的。所以当给子元素设置margin-top的时候,请给父元素加上overflow:hidden,这个也是css中常见的问题,解决办法同样有好几个,本篇暂不做解释。自己也可以用padding试一下哦~

4、思路:利用position: absloute(绝对定位)。其实这个方法和用边距的办法差不多,只不过实现形式不同。首先我们需要知道子元素的高度,然后给这个元素定位在父元素垂直居中的位置上。也是分两种情况:一是父元素高度未知,我们可以用top: 50%,margin-top: -(子元素的高度/2)来实现;二是父元素高度已知,直接top = (父元素高-子元素高)/2,这个方法实际上就是3的另一种实现,原理一致;

html同上

css

 <style type="text/css">
*{
margin:;
padding:;
}
body{
font-family: 'microsoft yahei';
}
.wapper{
width: 100%;
height: 500px;
background-color: #f7f7f7;
text-align: center;
position: relative;
}
.wapper .child{
position: absolute;
width: 100%;
font-size: 14px;
line-height:;
top: 50%;
margin-top: -7px; //文字14px 行高1 所以p标签的高度为14px
}
</style>

效果:父元素高度不固定的时候,一般是父元素中有多个子元素,其他的子元素将父元素撑开,然后某一个子元素设置绝对定位。小例子里没有其他子元素,所以直接设置了父元素的高度,演示一个大概,了解下原理。

5、思路:使用flex布局。注意要做一下兼容!

 <style type="text/css">
*{
margin:;
padding:;
}
body{
font-family: 'microsoft yahei';
}
.wapper{
width: 100%;
height: 500px;
background-color: #f7f7f7;
text-align: center;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center; }
.wapper .child{ }
</style>

效果:flex虽然使用起来很方便,但是这一堆兼容看起来也是略不爽呢。所以一般垂直居中能用前几种方法解决的,我也很少用flex(个人习惯)。

---------------------------------------------------------2017.02.16----------------------------------------------------------------------------------------------

6、群里的小伙伴给出了另外的一种方法,也是利用了position: absolute;

<div style="width: 50px; height: 50px; background-color: red;position: absolute; top: 0; bottom: 0; right: 0; left: 0; margin:auto"></div>

总结:有错误欢迎指出,互相学习~over!

css元素垂直居中的更多相关文章

  1. [转]-CSS 元素垂直居中的6种方法

    原文地址:http://blog.zhourunsheng.com/2012/03/css-%E5%85%83%E7%B4%A0%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD ...

  2. CSS 元素垂直居中的 6种方法

    利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.本文收集了六种利用css进 ...

  3. CSS元素垂直居中方法总结

    坚持,坚持,坚持... 以上为自我鼓励,哈哈... ------------------------------------------------- 相信没有真正是尝试过的人应该都和我一样,觉得居中 ...

  4. css元素垂直居中的8中方法

    1. 通过vertical-align:middle实现CSS垂直居中 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注意,vertical生效的 ...

  5. css元素垂直居中方法

    1.Line-height 适用情景:单行文字垂直居中技巧 这个方式应该是最多人知道的了,常见于单行文字的应用,像是按钮这一类对象,或者是下拉框.导航此类元素最常见到的方式了.此方式的原理是在于将单行 ...

  6. css 元素垂直居中

    通用 <div id="parent"> <div id="child">Content here</div> </d ...

  7. css点滴1—八种方式实现元素垂直居中

    这里介绍实现元素垂直居中的方式,文章是参考了<css制作水平垂直居中对齐>这一篇文章. 1.行高和高度实现 这种方式实现单行垂直居中是很简单的,但是要保证元素内容是单行的,并且其高度是不变 ...

  8. HTML/CSS:div居中和div内部元素垂直居中(1)

    div居中 div水平和垂直居中,text-align和vertical-align不起作用,因为标签div没有这两个属性,所以再css中设置这两个值不能居中的效果 1. div水平居中:设置marg ...

  9. CSS布局:元素垂直居中

    CSS布局之元素垂直居中 本文将依次介绍在不同条件下实现垂直居中的多种方法及简单原理 Tip:下文中说的适用场景只是举了几个简单的例子方便读者理解.实际应用场景太复杂,生搬硬套容易出错.最重要的是掌握 ...

随机推荐

  1. Openstack 中的消息总线 & AMQP

    目录 目录 消息总线 消息总线的原理 AMQP 消息总线 Openstack 采用了面向服务的开发模式(有别于面向对象和面向过程),需要我们去考虑各个服务之间和各项目之间是如何传递消息的. Restf ...

  2. Unity5.2.1上Android真机调试环境配置

    下载SDK,JDK安装,配置JAVA环境 1.下载SDK,下载adt-bundle-windows-x86_64-20131030.zip,下载地址:http://pan.baidu.com/shar ...

  3. 专题:LFS构建逻辑理解

    严格来说,LFS只能称为“pseudo LFS”,WHY? 因为LFS归根结底,还是基于已有的操作系统平台构建而来,并非真正的从0开始,它没有突破所谓“鸡与蛋”的死循环:但它确实有助于理解Linux的 ...

  4. 并发编程之CAS(二)

    更多Android架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从以下几个内容来阐述CAS: [CAS原理] [CAS带来的ABA问题] 一 ...

  5. 用python+tushare获取股票前复权后复权行情数据

    接口名称 :pro_bar 接口说明 :复权行情通过通用行情接口实现,利用Tushare Pro提供的复权因子进行计算,目前暂时只在SDK中提供支持,http方式无法调取. Python SDK版本要 ...

  6. Match & Catch CodeForces - 427D 后缀自动机水题

    题意: 给出两个字符串a,b,求一个字符串,这个字符串是a和b的子串, 且只在a,b中出现一次,要求输出这个字符串的最小长度. 题解: 将a串放入后缀自动机中,然后记录一下每个节点对应的子串出现的次数 ...

  7. 众所周知,static修饰的成员只实例化一次,而string类型每次赋值都会重新创建一个实例,那么用static修饰string呢?

    string 类型每次实例化都会重新创建一个实例: 解释:string 类型重载了运算符 “=” ,每次 “=” 操作都是一次 “new”. static 修饰符的成员只实例化一次?? 解释:这个说法 ...

  8. 在windows server 2012中安装完oracle 11 client如何使用

    1.首先要添加监听配置,这样才可以没有报错的连接上服务器,至于如何添加,请自行搜索. 2.打开SQL  Plus连接oracle server端,这里因为是小白,看到命令行界面上来就需要输入用户名密码 ...

  9. 笔记49 在Spittr应用中整合Hibernate

    在前边构建的Spittr应用中整合Hibernate 由于最近所学的hibernate都是使用xml方式进行配置的,所以在与以Java方式配置的Spittr应用结合时就会出现一些小问题,在此进行总结. ...

  10. Python全栈开发:Javascript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...