如何使用css设置元素垂直居中
这篇文章主要介绍如何使用css设置元素垂直居中,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
html代码:
<div class="parent">
<div class="child">Text here</div>
</div>
既然设置子元素的垂直居中,那就要知道父元素的高度,才能知道这所谓的中在哪,对吧?就像你想在一段距离的中间位置站住,那你首先需要知道这段距离有多长,你才能知道中间位置在哪.
注意,我所有的百分比高宽,都是建立在html,body {width: 100%;height: 100%;}
这样的设置的基础之上的,如果你没有这样设置,.parent这个div的父元素又是body,body你又没有设置宽高,你就可能看不到效果,.parent这个div的高宽比是相对于它的父元素的,所以你在使用的时候需要确定.parent这个div的父元素设置了宽度和高度的.
(1) 行内文本垂直居中
css代码:
.parent {
height: 100px;
border: 1px solid #ccc;
}
.child {
line-height: 100px;
}
(2) 行内非文本垂直居中(以img为例)
html代码:
<div class="parent">
<img class="lazy" data-src="image.png" alt="" />
</div>
css代码
.parent {
height: 100px;
border: 1px solid #ccc;
}
.parent img {
//注意此时应该保证图片自身的高度或者你设置的高度小于父元素的200px的行高,不然你看不出来居中的效果.
line-height: 100px;
}
(3) 未知高度的块级元素垂直居中
html代码:
<div class="parent">
<div class="child">
<!--.child的高度未知,父元素要有高度-->
sddvsds dfvsdvds
</div>
</div>
第一种方法(不需要加padding):
css代码:
.parent {
width: 100%;
height: 100%;
position: relative;
}
.child {
width: 500px;
border: 1px solid #ccc;
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代码:
<div class="parent">
<div class="child">
<!--.child的高度已知,父元素高度已知-->
sddvsds dfvsdvds
</div>
</div>
css代码:
#parent {
height: 300px;
}
#child {
height: 40px;
margin-top: 130px;
border: 1px solid #ccc;
}
以上是“如何使用css设置元素垂直居中”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341