视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
总结利用css设置元素垂直居中
2020-11-27 18:50:09 责编:小采
文档

作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼,下面这篇文章主要给大家汇总介绍了关于利用css设置元素垂直居中的解决方法,有了这些方法就用再愁啦,需要的朋友可以参考下。

前言

元素的垂直居中也是我们日常网页布局中经常会遇到的问题,本文主要给大家介绍了关于利用css设置元素垂直居中的解决方法,文中介绍了多种情况的多种解决方法,相信会对遇到这个问题的朋友们带来一定的帮助,下面话不多说了,来一起看看详细的介绍吧。

html代码:

<p class="parent">
<p class="child">Text here</p>
</p>

既然设置子元素的垂直居中,那就要知道父元素的高度,才能知道这所谓的中在哪,对吧?就像你想在一段距离的中间位置站住,那你首先需要知道这段距离有多长,你才能知道中间位置在哪.
注意,我所有的百分比高宽,都是建立在html,body {width: 100%;height: 100%;}这样的设置的基础之上的,如果你没有这样设置,.parent这个p的父元素又是body,body你又没有设置宽高,你就可能看不到效果,.parent这个p的高宽比是相对于它的父元素的,所以你在使用的时候需要确定.parent这个p的父元素设置了宽度和高度的.

(1) 行内文本垂直居中

css代码:

.parent {
 height: 100px;
 border: 1px solid #ccc; /*设置border是为了方便查看效果*/
}
.child {
 line-height: 100px;
}

(2) 行内非文本垂直居中(以img为例)

html代码:

<p class="parent">
 <img src="image.png" alt="" />
</p>

css代码

.parent {
 height: 100px;
 border: 1px solid #ccc; /*设置border是为了方便查看效果*/
}
.parent img {
 //注意此时应该保证图片自身的高度或者你设置的高度小于父元素的200px的行高,不然你看不出来居中的效果.
 line-height: 100px;
}

(3) 未知高度的块级元素垂直居中

html代码:

<p class="parent">
 <p class="child">
 <!--.child的高度未知,父元素要有高度-->
 sddvsds dfvsdvds
 </p>
</p>

第一种方法(不需要加padding):

css代码:

.parent {
 width: 100%;
 height: 100%;
 position: relative;
 /*display: table;*/
}
.child {
 width: 500px;
 border: 1px solid #ccc; /*设置border是为了方便查看效果*/
 position: absolute;
 top: 50%;
 transform: translateY(-50%);
}

第二种方法(不使用transform):

css代码:

.parent {
 position: relative;
 width: 100%;
 height: 100%;
}
.child {
 width: 500px;
 border: 1px solid #ccc;
 position: absolute;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
 height: 30%;
 margin: auto;
}

第三种方法(需要加padding):

css代码:

#parent {
 padding: 5% 0;
}
#child {
 padding: 10% 0;
}

第四种方法:

(使用display: table,此种方法也适用于行内文本元素的居中):

css代码:

.parent {
 width: 100%;
 height: 100%;
 display: table;
}
.child {
 display: table-cell;
 vertical-align: middle;
}

第五种方法(flex布局,这里需要考虑兼容性奥!)

css 代码:

.parent {
 width: 100%;
 height: 100%; /*这里一定要写高度奥!*/
 display: flex;
 align-items: center;
 justify-content: center;
 }

(4) 已知高度的块级元素垂直居中

html代码:

<p class="parent">
 <p class="child">
 <!--.child的高度已知,父元素高度已知-->
 sddvsds dfvsdvds
 </p>
</p>

css代码:

#parent {
 height: 300px;
}
#child {
 height: 40px;
 margin-top: 130px; /*这个只为父元素的高度减去这个元素的高度除以二计算得到的*/
 border: 1px solid #ccc;
}

下载本文
显示全文
专题