100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > css实现垂直居中的几种方式(布局常用)

css实现垂直居中的几种方式(布局常用)

时间:2022-09-21 12:30:39

相关推荐

css实现垂直居中的几种方式(布局常用)

编辑于: -05-21

前提:

html模板:

<div class="parent"><div class="content">内容垂直居中</div></div>复制代码

声明:以下示例,主要实现垂直居中的样式代码为加粗的部分

一、对单行元素进行垂直居中时

可设置该行内元素的父元素的height与line-heigth的值相等,让行内元素垂直居中

针对行内元素,可通过设置vertical-align: middle;以及line-height进行垂直居中

二、对文本进行垂直居中

针对文本,通过display:flex;配合align-items和justify-content实现文本居中

.content{display: flex;align-items: center;justify-content: center;}复制代码

三、对已知高度块级元素进行垂直居中

绝对定位,配合top:50%和负margin-top(元素高度一半)进行垂直居中

.content{position: absolute;top: 50%;left: 50%;margin-top: -10em; /* 为元素height/2 */margin-left: -10em;width: 20em;height: 20em;background-color: aqua;}复制代码

绝对定位,配合top:0;bottom:0;和margin:auto进行垂直居中

.content{position: absolute;margin:auto;top: 0;bottom: 0;left: 0;right: 0;height: 200px; /*要求指明元素高度*/background-color: aqua;}复制代码

设置position:absolute;和calc()函数实现垂直居中

.content{position: absolute;top:calc(50% - 10em); /*calc(50% - 元素本身高度一半)*/left: calc(50% - 20em); /*注意使用时减号间有空格*/width: 40em;height: 20em;background-color: aqua;}复制代码

使用浮动float实现元素垂直居中

原理:通过在要进行垂直居中的元素a前面添加一个无内容的元素,并将该无内容元素的高设置为50%,在利用clear:botn清除浮动,则元素a相对于父元素来说是垂直居中。

html如下:

<div class="parent"><div class="float"></div><div class="content"><div><span>内容垂直居中内容垂直居中内容容垂居中</span></div></div></div>复制代码

css如下:

.parent{height: 500px;background-color: red;}/**添加的辅助元素*/.float{height: 50%;}.content{clear: both;background-color: aqua;}复制代码

四、对未知高度块级元素进行垂直居中

设置position:absolute;和transform:traslate(x,y)实现水平垂直居中

.content{position: absolute;margin:auto;top: 50%;left: 50%;transform:translate(-50%,-50%); /*针对元素本身向左以及向上移动50%*/background-color: aqua;}复制代码

居于视口单位的解决方案:

可通过使用margin-top: 50vh;配合transform:translateY(-50%);实现视口居中

.content{width: 18em;margin-top: 50vh; /*50vh表示视口高度的50%*/transform: translateY(-50%); /*相对元素自身向上移动50%*/background-color: aqua;}复制代码

通过display:table-cell和vertical-align:middle;实现垂直居中

.parent{display: table;width: 50px; /*建议设置宽高,以便于查看效果*/height: 500px;}.content{display: table-cell;vertical-align: middle;background-color: aqua;}复制代码

基于flex的解决方案:

.parent{display: flex;background-color: beige;}.content{margin: auto; /*自动相对于父元素水平垂直居中*/background-color: aqua;}复制代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。