Css实现元素的垂直居中
前言:
在写CSS的时候让元素在高度固定的容器中垂直居中是很简单的,譬如设置容器的padding或者元素的margin之类的都可以做到;让元素在容器中水平居中也有text-align:center、margin:0 auto;之类的属性来帮我们达到目的,但是如何让元素在不确定高度的容器中垂直居中或者行数不确定的文字在高度固定的容器垂直居中呢?下面我们来讨论几种让元素垂直居中的方法:
一、文字的垂直居中
1、单行文字
line-height与height高度相同,就可以让单行文字垂直居中

2、多行文字
我们可以把多行的文字当做图片来处理,用span将文字封装起来,并设置与图片相同的display属性(inline-block),然后用处理图片垂直居中的方式让多行文字垂直居中即可。
<div class="wrap">
<span class="content">
content<br>
content
</span>
</div>
.wrap {
width: 200px;
height: 200px;
line-height: 200px;
background-color: #36AF77;
}
.content {
display: inline-block;
vertical-align: middle;
line-height: 15px;
font-size: 14px;
}
运行结果:

二、图片的垂直居中
1、通过vertical-align和line-height来实现垂直居中
<div class="wrap">
<img src="E:/picture/me.jpg" alt="">
</div>
.wrap {
width: 200px;
height: 200px;
line-height: 200px;
font-size:;
background-color: #36AF77;
}
img {
vertical-align: middle;
}
运行结果:

2、通过100%高度的span进行垂直居中
<div class="wrap">
<img src="E:/picture/me.jpg" alt=""><span></span>
</div
.wrap {
width: 200px;
height: 200px;
background-color: #36AF77;
}
img {
vertical-align: middle;
}
span {
display:inline-block;
height: 100%;
vertical-align: middle;
}
运行结果:

这里的img与一个height:100% 的span同行,使这一行的行高撑满div。
3、背景图定位的方法
<div class="wrap">
</div>
.wrap {
width: 200px;
height: 200px;
background-color: #36AF77;
background-image: url("E:/picture/me.jpg");
background-position: center;
background-size: 60%;
background-repeat: no-repeat;
}
运行结果:

这里将图片作为容器的背景,通过background-position属性让它居中。4、通过table-cell来实现垂直居中
<div class="wrap">
<img src="E:/picture/me.jpg" alt="">
</div>
.wrap {
width: 200px;
height: 200px;
background-color: #36AF77;
display: table-cell;
font-size:;
vertical-align: middle;
}
运行结果:

W3C上对vertical-align的定义:vertical-align 属性设置元素的垂直对齐方式。
该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。
在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
5、利用flex弹性布局实现垂直居中
<div class="wrap">
<img src="E:/picture/me.jpg" alt="">
</div>
img {
width: 88px;
height: 88px;
}
.wrap {
width: 200px;
height: 200px;
background-color: #36AF77;
display: flex;
justify-content: center;
align-items: center;
}
运行结果:

可惜IE10之前的版本是不支持的,大家自行尝试
6、利用after伪类
<div class="wrap">
<img src="E:/picture/me.jpg" alt="">
</div>
img {
width: 88px;
height: 88px;
}
.wrap {
width: 200px;
height: 200px;
background-color: #36AF77;
}
.wrap:after {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
img {
vertical-align: middle;
}
运行结果:

这种方式和第二种类似,只是用after伪类生成的元素代替了span元素而已。
7、在已知图片高度的情况下借助额外的块级元素
<div class="wrap">
<div class="temp"></div>
<img src="E:/picture/me.jpg" alt="">
</div
img {
width: 88px;
height: 88px;
}
.wrap {
width: 200px;
height: 200px;
background-color: #36AF77;
}
.temp {
height: 50%;
margin-bottom: -44px;
opacity:;
}
运行结果:

opacity:0 //透明不显示但是占位
8、在已知图片高度的情况下借助margin-top负边距
<div class="wrap">
<img src="E:/picture/me.jpg" alt="">
</div>
img {
width: 88px;
height: 88px;
}
.wrap {
position: relative;
width: 200px;
height: 200px;
background-color: #36AF77;
}
img {
position:absolute;
top: 50%;
left:;
right:;
margin:auto;
margin-top: -44px;
}
运行结果:

9、借助绝对定位
<div class="wrap">
<img src="E:/picture/me.jpg" alt="">
</div>
.wrap {
position: relative;
width: 200px;
height: 200px;
background-color: #36AF77;
}
img {
position:absolute;
top:;
bottom:;
left:;
right:;
margin:auto;
}
运行结果:

10、主角最后登场----万能的居中方式(绝对定位加transform)
<div class="wrap">
<img class="center" src="E:/picture/me.jpg" alt="">
</div>
<div class="wrap">
<img class="vertical-center" src="E:/picture/me.jpg" alt="">
</div>
<div class="wrap">
<img class="horizon-center" src="E:/picture/me.jpg" alt="">
</div>
.center {
left: 50%;
top: 50%;
position: absolute;
-webkit-transform: translate3D(-50%,-50%,0);
-ms-transform: translate3D(-50%,-50%,0);
-moz-transform: translate3D(-50%,-50%,0);
-o-transform: translate3D(-50%,-50%,0);
transform: translate3D(-50%,-50%,0);
z-index:;
}
.vertical-center {
top: 50%;
position: absolute;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
z-index:;
}
.horizon-center {
left: 50%;
position: absolute;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-o-transform: translateX(-50%);
transform: translateX(-50%);
z-index:;
}
.wrap {
position: relative;
width: 200px;
height: 200px;
margin-bottom: 10px;
background-color: #36AF77;
}
运行结果:

通过绝对定位到50%的位置,再转换自己高度宽度50%的负距离来实现居中显示。
然而万能的方法并不万能,transform在IE9及其以下是不支持的,大家节哀。
关于水平居中文字可以用text-align:center,块级元素可以用margin: 0 auto;之类的实现,比较简单就不多说了。
简单介绍了10种图片的的居中方法,有没有觉得有所感悟,妈妈再也不用担心我不会元素居中了。
以上
Css实现元素的垂直居中的更多相关文章
- CSS实现元素水平垂直居中—喜欢对称美,这病没得治
[TOC] 在CSS中对元素进行水平居中是非常简单的:如果它是一个行内元素,就对它的父元素应用text-align:center;如果它是一个块级元素,就对它自身应用margin:auto.然而要对一 ...
- css中元素水平垂直居中4种方法介绍
table-cell轻松设置文本图片水平垂直居中 让一个元素垂直居中的思路:把这个元素的容器设置为table-cell,也就是具有表格单元格的特性,再使用vertical-align(这个属性对blo ...
- css 实现元素水平垂直居中总结5中方法
个人总结,如有错误请指出,有好的建议请留言.o(^▽^)o 一.margin:0 auto:text-align:center:line-height方法 <div id="divAu ...
- CSS实现元素水平垂直居中
我们知道,实现元素的水平居中比较简单,在设置了宽度后,设置左右margin为auto就可以. 但是如何设置元素垂直居中呢? 当然,对于单行的文字,可以通过设置line-height来解决, 可以对于一 ...
- css:元素水平垂直居中的多种方式
CSS元素(文本.图片)水平垂直居中方法 1.text-align:center; 2.margin:0 auto; 3.display:inline-block; + text-align:ce ...
- CSS实现元素水平/垂直居中的方法
首先,我们来了解水平居中,它有很多种方法,我们暂时先来了解其中的几种: 1. 在实现方案中,我们最熟悉的莫过于给元素定义一个宽度,然后使用margin: 1 2 3 4 body{ wi ...
- css控制元素 水平垂直居中
控制元素居中核心代码为 position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; css: /* 容器 */ .w ...
- css 使元素居中
css使元素水平居中 1.对于行内元素的水平居中 给父元素设置text-align:center <div style="text-align:center;">居中显 ...
- css知识笔记:垂直居中(别只看,请实操!!!)
css实现元素的垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...
随机推荐
- 原生JS给元素添加class属性
有下面这三种简单语句. document.getElementsByTagName('body')[0].className = 'snow-container'; //设置为新的 document ...
- argv[1] 路径问题
在看<学习opencv>一书时遇到一个小问题:函数只是通过argv传递参数来读取图片并显示,但是却一直弹出画布,没有图像. 如下:test.c # include<stdio.h&g ...
- Django配置图片上传
本文首先实现django中上传图片的过程,然后解决富文本编辑器文件上传的问题. 一. 上传图片 1.在 settings.py 中配置MEDIA_URL 和 MEDIA_ROOT 在 D:\blog ...
- nodejs async waterfull 小白向
async.waterfall([function(callback){var a=3+5;callback(null,a);},function(n,callback) { callback(nul ...
- Python3学习笔记18-访问限制
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从Student类的定义来看,外部代码还是可以自由地修改一个实例的name ...
- oracle move 释放 表空间
使用sqlplus 操作 alter table TEST_TB1 move storage(initial 64K); alter table TEST_TB1 move ; select SEG ...
- zabbix通过简单shell命令监控elasticsearch集群状态
简单命令监控elasticsearch集群状态 原理: 使用curl命令模拟访问任意一个es节点可以反馈的集群状态,集群的状态需要为green curl -sXGET http://serverip: ...
- Mysql添加注释(comment)(转)
在MySQL数据库中, 字段或列的注释是用属性comment来添加. 创建新表的脚本中, 可在字段定义脚本中添加comment属性来添加注释. 示例代码如下: create table test( i ...
- WPS for Linux
https://www.cnblogs.com/gisalameda/p/6839482.html
- html table标签
table标签 table的基本样式 table表格的美化 table表格行合并和列合并 table的基本样式: https://blog.csdn.net/lilongsy/article/deta ...