前言:

在写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实现元素的垂直居中的更多相关文章

  1. CSS实现元素水平垂直居中—喜欢对称美,这病没得治

    [TOC] 在CSS中对元素进行水平居中是非常简单的:如果它是一个行内元素,就对它的父元素应用text-align:center;如果它是一个块级元素,就对它自身应用margin:auto.然而要对一 ...

  2. css中元素水平垂直居中4种方法介绍

    table-cell轻松设置文本图片水平垂直居中 让一个元素垂直居中的思路:把这个元素的容器设置为table-cell,也就是具有表格单元格的特性,再使用vertical-align(这个属性对blo ...

  3. css 实现元素水平垂直居中总结5中方法

    个人总结,如有错误请指出,有好的建议请留言.o(^▽^)o 一.margin:0 auto:text-align:center:line-height方法 <div id="divAu ...

  4. CSS实现元素水平垂直居中

    我们知道,实现元素的水平居中比较简单,在设置了宽度后,设置左右margin为auto就可以. 但是如何设置元素垂直居中呢? 当然,对于单行的文字,可以通过设置line-height来解决, 可以对于一 ...

  5. css:元素水平垂直居中的多种方式

    CSS元素(文本.图片)水平垂直居中方法   1.text-align:center; 2.margin:0 auto; 3.display:inline-block; + text-align:ce ...

  6. CSS实现元素水平/垂直居中的方法

    首先,我们来了解水平居中,它有很多种方法,我们暂时先来了解其中的几种: 1.    在实现方案中,我们最熟悉的莫过于给元素定义一个宽度,然后使用margin: 1 2 3 4 body{     wi ...

  7. css控制元素 水平垂直居中

    控制元素居中核心代码为 position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; css: /* 容器 */ .w ...

  8. css 使元素居中

    css使元素水平居中 1.对于行内元素的水平居中 给父元素设置text-align:center <div style="text-align:center;">居中显 ...

  9. css知识笔记:垂直居中(别只看,请实操!!!)

    css实现元素的垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

随机推荐

  1. LOJ 3043: 洛谷 P5280: 「ZJOI2019」线段树

    题目传送门:LOJ #3043. 题意简述: 你需要模拟线段树的懒标记过程. 初始时有一棵什么标记都没有的 \(n\) 阶线段树. 每次修改会把当前所有的线段树复制一份,然后对于这些线段树实行一次区间 ...

  2. 泰克TDS1000B示波器使用说明

    1.前言 本文主要根据泰克官方网站TDS1000B/TDS2000B使用教程视频进行整理. 2.认识你的示波器 TDS1000B带宽从40MHZ到200MHZ,采样率高达2Gbps

  3. chart学习

    效果图: 目录信息 graphic.jsp <%@ page language="java" contentType="text/html; charset=UTF ...

  4. Linux中断处理(二)

    与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:int request_irq(unsigne ...

  5. JOptionPane类提示框常用方法总结

    JOptionPane类封装了很多的方法,总结如下: 1.showMessageDialog 显示一个带有OK 按钮的模态对话框. 下面是几个使用showMessageDialog 的例子: Java ...

  6. 【必备】史上最全的浏览器 CSS & JS Hack 手册

    [必备]史上最全的浏览器 CSS & JS Hack 手册   浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技 ...

  7. HTTP2.0 简明笔记

    前言 RFC2616发布以来,一直是互联网发展的基石.HTTP协议也成为了可以在任何领域使用的核心协议,基于这个协议人们设计和部署了越来越多的应用.HTTP的简单本质是其快速发展的关键,但随着越来越多 ...

  8. LeetCode(50):Pow(x, n)

    Medium! 题目描述: 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, ...

  9. Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka

    一.概述 线上有一套k8s集群,部署了很多应用.现在需要对一些基础服务做一些常规检测,比如: 系统时间,要求:k8s的每一个节点的时间,差值上下不超过2秒 k8s版本,要求:k8s的每一个节点的版本必 ...

  10. 使用jdk中提供的排序方式

    package com.bjpowernode.t01; import java.util.Arrays; /** * 使用jdk中提供的排序方式 * */public class TestArray ...