css控制一条线垂直居中,CSS实现垂直居中的4种思路详解

编程入门 行业动态 更新时间:2024-10-06 01:36:23

css控制一条线垂直居中,CSS实现垂直居中的4种思路<a href=https://www.elefans.com/category/jswz/34/1770044.html style=详解"/>

css控制一条线垂直居中,CSS实现垂直居中的4种思路详解

行高line-height实现单行文本垂直居中

以前一直认为单行文本垂直居中要将高度和行高设置成相同的值,但高度其实没必要设置。实际上,文本本身就在一行中居中显示。在不设置高度的情况下,行高撑开高度。

.test{

line-height: 50px;

background-color: lightblue;

}

测试文字

设置vertical-align:middle实现垂直居中

【1】设置父元素的display为table-cell

通过为table-cell元素设置vertical-align:middle,可使其子元素均实现垂直居中。这和表格里单元格的垂直居中是类似的

[注意] 若要IE7-浏览器支持,则可以将其改为

[注意] 设置为table-cell的div不能使用浮动或绝对定位,因为浮动或绝对定位会使元素具有块级元素特性,从而丧失了table-cell元素具有的垂直对齐的功能。

若需要浮动或绝对定位处理,则需要外面再套一层div。

.parent{

display: table-cell;

vertical-align: middle;

}

我是有点长的有点长的有点长的有点长的测试文字

【2】若子元素是图片,通过设置父元素的行高来代替高度,且设置父元素的font-size为0。

vertical-align:middle的解释是元素的中垂点与父元素的基线加1/2 父元素中字母X的高度对齐。由于字符X在em框中并不是垂直居中的,且各个字体的字符X的高低位置不一致。

所以,当字体大小较大时,这种差异就更明显。当 font-size为0时,相当于把字符X的字体大小设置为0,于是可以实现完全的垂直居中。

.parent{

line-height: 100px;

font-size: 0;

}

.child{

vertical-align: middle;

}

【3】通过新增元素来实现垂直居中的效果

新增元素设置高度为父级高度,宽度为0,且同样设置垂直居中vertical- align:middle的inline-block元素。由于两个元素之间空白被解析,所以需要在父级设置font-size:0,在子级再将 font-size设置为所需值;若结构要求不严格,则可以将两个元素一行显示,则不需要设置font-size:0。

.parent{

height: 100px;

font-size: 0;

}

.child{

display: inline-block;

font-size: 20px;

vertical-align: middle;

}

.childSbling{

display: inline-block;

height: 100%;

vertical-align: middle;

}

我是比较长的比较长的多行文字

思路三:通过绝对定位实现垂直居中

【1】若子元素不定高, 使用top50%配合translateY(-50%)可实现居中效果。

translate函数的百分比是相对于自身高度的,所以top:50%配合translateY(-50%)可实现居中效果。

[注意] IE9-浏览器不支持;

[注意]若子元素的高度已知,translate()函数也可替换为margin-top: 负的高度值。

.parent{

position:relative;

}

.child{

position: absolute;

top: 50%;

transform: translateY(-50%);

}

测试文字

【2】若子元素定高,结合绝对定位的盒模型属性,实现居中效果

.parent{

position: relative;

}

.child{

position: absolute;

top: 0;

bottom: 0;

margin: auto 0;

height: 50px;

}

测试文字

在水平居中对齐中,元素外层套一层div并设置absolute,元素设置负margin-left或者relative的负left属性,可以实现水平居中的效果。但由于margin是相对于包含块宽度的,这样margin-top:-50%得到的是宽度而不是高度的-50%,所以不可行;对于relative的百分比取值而言,在包含块高度为auto的情况下,chrome、safari和IE8+浏览器都不支持设置元素的百分比top值,所以也不可行。

思路四:使用弹性盒模型flex实现垂直居中

[注意] IE9-浏览器不支持

【1】在伸缩容器上设置侧轴对齐方式align-items: center

.parent{

display: flex;

align-items: center;

}

测试文字

【2】在伸缩项目上设置margin: auto 0

.parent{

display: flex;

}

.child{

margin: auto 0;

}

测试文字

总结

以上所述是小编给大家介绍的CSS实现垂直居中的4种思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及

时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多推荐

css控制一条线垂直居中,CSS实现垂直居中的4种思路详解

本文发布于:2024-02-13 13:30:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758545.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   一条线   思路   css   CSS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!