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.写这篇文章的目的, ...
随机推荐
- ActiveMQ集群
1.ActiveMQ集群介绍 1.为什么要集群? 实现高可用,以排除单点故障引起的服务中断 实现负载均衡,以提升效率为更多客户提供服务 2.集群方式 客户端集群:让多个消费者消费同一个队列 Broke ...
- 【Eclipse】Eclipse中打开cmd窗口和terminal窗口
在IDEA的时候可以直接使用terminal打开类似于cmd窗口的功能,于是想着在eclipse也使用类似的功能. 1.Eclipse打开类似于cmd窗口的功能.(DOS) 1.window——> ...
- dubbo系列三、架构介绍及各模块关系
一.整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代 ...
- 有pom.xml文件但是无法用maven构建问题
java项目转maven项目,要注意pom.xml文件中是否定义了JDK的版本,要与环境保持一致.项目,右键,configure,选择转换为maven项目即可.转换后,有三个位置需要注意: 1.Jav ...
- React-Native 之 项目实战(一)
前言 本文有配套视频,可以酌情观看. 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我. 文中所有内容仅供学习交流之用,不可用于商业用途,如因此引起的相关法律法规责任,与我无关. 如文中内容对 ...
- saltStack的event接口通过mysql数据库接收SaltStack批量管理日志
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- wordpress更换主题未能连接到FTP服务器
报错原因:由于你的 WordPress 所在的目录没有写入权限,而wordpress安装主题或者更新时,企图通过ftp帐号进行更新,所以无法完成安装或更新 解决办法: 找到wp-config.php文 ...
- html中子界面与父界面相互操作或传值
一.在使用iframe的页面,要操作这个iframe里面的DOM元素可以用: contentWindow.contentDocument(测试的时候chrom浏览器,要在服务器环境下) content ...
- JS实现购物车02
需求使用JS实现购物车功能02 具体代码 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- web----ssl通信
ssl通信 https://www.cnblogs.com/zhengah/p/5007753.html