css元素垂直居中
一、碎碎念:啊啊啊,原谅我只能起一个酱紫微大众微俗气的标题,因为实在没有什么能比这样表达的更清楚直观了呢!
二、没有知识储备,直接上示例:
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元素垂直居中的更多相关文章
- [转]-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 ...
- CSS 元素垂直居中的 6种方法
利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.本文收集了六种利用css进 ...
- CSS元素垂直居中方法总结
坚持,坚持,坚持... 以上为自我鼓励,哈哈... ------------------------------------------------- 相信没有真正是尝试过的人应该都和我一样,觉得居中 ...
- css元素垂直居中的8中方法
1. 通过vertical-align:middle实现CSS垂直居中 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注意,vertical生效的 ...
- css元素垂直居中方法
1.Line-height 适用情景:单行文字垂直居中技巧 这个方式应该是最多人知道的了,常见于单行文字的应用,像是按钮这一类对象,或者是下拉框.导航此类元素最常见到的方式了.此方式的原理是在于将单行 ...
- css 元素垂直居中
通用 <div id="parent"> <div id="child">Content here</div> </d ...
- css点滴1—八种方式实现元素垂直居中
这里介绍实现元素垂直居中的方式,文章是参考了<css制作水平垂直居中对齐>这一篇文章. 1.行高和高度实现 这种方式实现单行垂直居中是很简单的,但是要保证元素内容是单行的,并且其高度是不变 ...
- HTML/CSS:div居中和div内部元素垂直居中(1)
div居中 div水平和垂直居中,text-align和vertical-align不起作用,因为标签div没有这两个属性,所以再css中设置这两个值不能居中的效果 1. div水平居中:设置marg ...
- CSS布局:元素垂直居中
CSS布局之元素垂直居中 本文将依次介绍在不同条件下实现垂直居中的多种方法及简单原理 Tip:下文中说的适用场景只是举了几个简单的例子方便读者理解.实际应用场景太复杂,生搬硬套容易出错.最重要的是掌握 ...
随机推荐
- CTF杂项思路工具分享————2019/5/30
分享碰到的一些奇奇怪怪的杂项解题方式: 键盘坐标密码: 题目给出一段字符串:11 21 31 18 27 33 34 对照上面的表格,就可以很清晰的看出来密文为:QAZIJCV 猪圈码: 题目为: 一 ...
- MySQL慢查询日志分割
mysql> set global slow_query_log=0; Query OK, 0 rows affected (0.00 sec) mysql> set global s ...
- 记录百度编辑器bug(在编辑框输入光标到达页面最底部时,功能区块会悬浮在页面最顶部并且与编辑框分离)
解决方案: //加入这段CSS#edui1_toolbarbox { position: relative !important; }
- windows IIS FTP 不支持创建多级目录
昨天因为这个事情搞了好久,因为客户那边使用的是IIS 上的FTP ,想着都差不多试着运行,结果竟然报错,说"错误550 文件不可用" 是在GetResponse()出现的异常,我用 ...
- PyQt5初识
学习PyQt5是个机缘,那是因为我的linux16.04+python3.6使了浑身解数也装不上PyQt4! PyQt5的官方文档貌似是要钱的!又想快速了解这个东东,我还是借鉴了万能的博客园大佬博主: ...
- [Err] 1701 - Cannot truncate a table referenced in a foreign key constraint
1.SET FOREIGN_KEY_CHECKS=0; 2.DELETE FROM ACT_RE_DEPLOYMENT where 1=1; 或者 truncate table ACT_RE_DEPL ...
- 并发编程 --进、线程池、协程、IO模型
内容目录: 1.socket服务端实现并发 2.进程池,线程池 3.协程 4.IO模型 1.socket服务端实现并发 # 客户端: import socket client = socket.soc ...
- 使用node搭建简单的服务
//创建依赖模块var http = require('http');var url = require('url');var fs = require('fs');var server = http ...
- 泛型(Generic)接口
泛型接口例子:一个学生有一个独一无二的ID,但是每个学生的姓名不一定是唯一的. class Program { static void Main(string[] args) { Student< ...
- leetcode-399-除法求值
方法一:dfs+图 class Solution: def calcEquation(self, equations: List[List[str]], values: List[float], qu ...