Css实现垂直居中的几种方法

栏目: CSS · 发布时间: 6年前

内容简介:在前端布局过程中,我们实现水平居中比较简单,一般通过margin:0 auto;和父元素 text-align: center;就能实现。但要实现垂直居中就没有那么容易,下面向大家分享下我工作中实现垂直居中的几种方法。这种方法比较适合文字的居中,其核心是设置行高(line-height)等于包裹他的盒子的高,或者不设高度只设行高,这种适合文字居中且高度固定的场景,使用起来比较方便也比较有用。如果是行内元素,因为其没有高度,需先把行内元素转换为行内块或者块元素。

在前端布局过程中,我们实现水平居中比较简单,一般通过margin:0 auto;和父元素 text-align: center;就能实现。但要实现垂直居中就没有那么容易,下面向大家分享下我工作中实现垂直居中的几种方法。

1、line-height等于hieght/只设line-height

这种方法比较适合文字的居中,其核心是设置行高(line-height)等于包裹他的盒子的高,或者不设高度只设行高,这种适合文字居中且高度固定的场景,使用起来比较方便也比较有用。

//html
<div class="middle">555</div>
 
//css
.middle{
  height: 50px;
  line-height: 50px;
  background: red;
}
复制代码
Css实现垂直居中的几种方法
值得注意的是

如果是行内元素,因为其没有高度,需先把行内元素转换为行内块或者块元素。

2、vertical-align: middle

这种实现元素的居中需要配合父元素设有等于自身高度的行高,且此元素是行内块元素。 只有三个条件都具备,才能实现垂直居中。代码如下:

//html
<div class="main">
   <div class="middle"></div>
</div>

//css
.main {
  width: 200px;
  height: 300px;
  line-height: 300px;
  background: #dddddd;
}
.middle{
  background: red;
  width: 200px;
  height: 50px;
  display: inline-block;//或者display: inline-table;
  vertical-align: middle;
}
复制代码
Css实现垂直居中的几种方法

需要注意的是这种方法需要一个固定的行高,且实现的居中其实是 近似居中 ,并不是真正意义的居中。

3、绝对定位加负外边距

这种方法核心在于先设置需要居中的元素为绝对定位,在设置其top:50%; 加上 margin-top等于负的自身高度的一半来实现居中。好处是实现起来比较方便,且父元素的高度可以为百分比,也不用设行高。代码如下:

//html
<div class="main">
  <div class="middle"></div>
</div>
  
//css
.main {
  width: 60px;
  height: 10%;
  background: #dddddd;
  position: relative;//父元素设为相对定位
}
.middle{
  position: absolute;//设为绝对定位
  top: 50%;//top值为50%
  margin-top: -25%;//设margin-top为元素高度的一半
  width: 60px;
  height: 50%;
  background: red;
}

复制代码
Css实现垂直居中的几种方法

4、绝对定位加margin:auto

先上代码:

//html
<div class="main">
  <div class="middle"></div>
</div>
  
//css
.main {
  width: 60px;
  height: 10%;
  background: #dddddd;
  position: relative;//父元素设为相对定位
}
.middle{
  width: 30%;
  height: 50%;
  position: absolute;//设为绝对定位
  top: 0;
  bottom: 0;//top、bottom设0即可,
  left: 0;//如果left、right也设为0则可实现水平垂直都居中
  right: 0;
  margin:auto;
  background: red;
}

复制代码

这种方法好处是 不止可以实现垂直居中,还可以实现水平居中 ,坏处是在网络或性能不好的情况下 会有盒子不直接定到位的情况 ,造成用户体验不好。

5、flex布局

flex布局可以很方便的实现垂直与水平居中,好处很多,在移动端使用比较广泛,坏处就是 浏览器兼容性不好 。代码如下:

//html
<div class="main">
  <div class="middle"></div>
</div>
  
//css
.main {
  width: 60px;
  height: 10%;
  background: #dddddd;
  display: flex;//设为flex
  justify-content: center;//水平居中
  align-items: center;//垂直居中
}
.middle{
  width: 30%;
  height: 50%;
  background: red;
}

复制代码
Css实现垂直居中的几种方法

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Clojure编程

Clojure编程

Chas Emerick、Brian Carper、Christophe Grand / 徐明明、杨寿勋 / 电子工业出版社 / 2013-3-26 / 99.00元

Clojure是一种实用的通用语言,它是传奇语言LISP的方言,可与Ruby、Python等动态语言相媲美,更以无缝Java库、服务,以及拥有JVM系统得天独厚的资源优势而胜出。本书既可以用来熟悉Clojure基础知识与常见例子,也可了解其相关的实践领域与话题,更可以看到这一JVM平台上的LISP如何帮助消除不必要的复杂性,为大家在编程实践中解决最具挑战性的问题开辟新的选择——更具灵活性,更适于W......一起来看看 《Clojure编程》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试