作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼,下面这篇文章主要给大家汇总介绍了关于利用css设置元素垂直居中的解决方法,有了这些方法就用再愁啦,需要的朋友可以参考下。
前言
元素的垂直居中也是我们日常网页布局中经常会遇到的问题,本文主要给大家介绍了关于利用css设置元素垂直居中的解决方法,文中介绍了多种情况的多种解决方法,相信会对遇到这个问题的朋友们带来一定的帮助,下面话不多说了,来一起看看详细的介绍吧。
html代码:
1 2 3 | <p class = "parent" >
<p class = "child" >Text here</p>
</p>
|
Salin selepas log masuk
既然设置子元素的垂直居中,那就要知道父元素的高度,才能知道这所谓的中在哪,对吧?就像你想在一段距离的中间位置站住,那你首先需要知道这段距离有多长,你才能知道中间位置在哪.
注意,我所有的百分比高宽,都是建立在html,body {width: 100%;height: 100%;}
这样的设置的基础之上的,如果你没有这样设置,.parent这个p的父元素又是body,body你又没有设置宽高,你就可能看不到效果,.parent这个p的高宽比是相对于它的父元素的,所以你在使用的时候需要确定.parent这个p的父元素设置了宽度和高度的.
(1) 行内文本垂直居中
css代码:
1 2 3 4 5 6 7 | .parent {
height: 100px;
border: 1px solid #ccc;
}
.child {
line-height: 100px;
}
|
Salin selepas log masuk
(2) 行内非文本垂直居中(以img为例)
html代码:
1 2 3 | <p class = "parent" >
<img src= "image.png" alt= "" />
</p>
|
Salin selepas log masuk
css代码
1 2 3 4 5 6 7 8 | .parent {
height: 100px;
border: 1px solid #ccc;
}
.parent img {
line-height: 100px;
}
|
Salin selepas log masuk
(3) 未知高度的块级元素垂直居中
html代码:
1 2 3 4 5 6 | <p class = "parent" >
<p class = "child" >
<!--.child的高度未知,父元素要有高度-->
sddvsds dfvsdvds
</p>
</p>
|
Salin selepas log masuk
第一种方法(不需要加padding):
css代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | .parent {
width: 100%;
height: 100%;
position: relative;
}
.child {
width: 500px;
border: 1px solid #ccc;
position: absolute;
top: 50%;
transform: translateY(-50%);
}
|
Salin selepas log masuk
第二种方法(不使用transform):
css代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | .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;
}
|
Salin selepas log masuk
第三种方法(需要加padding):
css代码:
1 2 3 4 5 6 | #parent {
padding: 5% 0;
}
#child {
padding: 10% 0;
}
|
Salin selepas log masuk
第四种方法:
(使用display: table,此种方法也适用于行内文本元素的居中):
css代码:
1 2 3 4 5 6 7 8 9 | .parent {
width: 100%;
height: 100%;
display: table;
}
.child {
display: table-cell;
vertical-align: middle;
}
|
Salin selepas log masuk
第五种方法(flex布局,这里需要考虑兼容性奥!)
css 代码:
1 2 3 4 5 6 7 | .parent {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
|
Salin selepas log masuk
(4) 已知高度的块级元素垂直居中
html代码:
1 2 3 4 5 6 | <p class = "parent" >
<p class = "child" >
<!--.child的高度已知,父元素高度已知-->
sddvsds dfvsdvds
</p>
</p>
|
Salin selepas log masuk
css代码:
1 2 3 4 5 6 7 8 | #parent {
height: 300px;
}
#child {
height: 40px;
margin-top: 130px;
border: 1px solid #ccc;
}
|
Salin selepas log masuk
以上就是我目前发现并亲自测试可行的一些方法,应该还有其他的方法
Atas ialah kandungan terperinci 总结利用css设置元素垂直居中. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!