资讯专栏INFORMATION COLUMN

CSS实现垂直居中的4种思路

Pikachu / 3392人阅读

摘要:测试文字若子元素定高,结合绝对定位的盒模型属性,实现居中效果测试文字关于增加层级的说明在水平居中对齐中,元素外层套一层并设置,元素设置负或者的负属性,可以实现水平居中的效果。

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

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



测试文字

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

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

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

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

表格结构

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

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


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

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

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

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


test

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

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


我是比较长的比较长的多行文字
思路三:通过绝对定位实现垂直居中

【1】若子元素不定高, 使用top50%配合translateY(-50%)可实现居中效果。
translate函数的百分比是相对于自身高度的,所以top:50%配合translateY(-50%)可实现居中效果。

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

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


测试文字

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


测试文字

<关于增加div层级的说明>

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

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

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

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


测试文字

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


测试文字

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/112585.html

相关文章

  • 使一个div垂直+水平居中方法

    摘要:前几天去一家互联网公司面试,面试官问到了这个应该算是比较简单的问题,在我自认为回答正确时,才知道这道题的答案有很多种,下面就让我们一起来探讨一下这个问题思路绝对定位居中原始版这个是我回答出来的,也是被各位所熟知的一种方法,设外层相对定位,内 前几天去一家互联网公司面试,面试官问到了这个应该算是比较简单的问题,在我自认为回答正确时,才知道这道题的答案有很多种,下面就让我们一起来探讨一下这...

    joyqi 评论0 收藏0
  • css实现水平/垂直居中效果

    摘要:一如果是已知宽高的元素做水平垂直居中效果的话,可以直接用具体的数值指定定位布局或偏移布局,这个就不过多讨论。这里主要介绍在不知宽高或需要弹性布局下的几种实现方式。 一、如果是已知宽高的元素做水平/垂直居中效果的话,可以直接用具体的数值指定定位布局或偏移布局,这个就不过多讨论。这里主要介绍在不知宽高或需要弹性布局下的几种实现方式。 二、1.table表格法 思路:显示设置父元素为:tab...

    Ilikewhite 评论0 收藏0
  • css常见布局上(两列布局)

    摘要:目录一大结构上的导航栏和内容区域两栏布局博客园为例腾讯课堂个人中心页慕课网个人中心页个人中心页二版的结构三类似九宫格布局的两列结构四图文两列布局左图右文字非垂直居中,左图,右固定行数的文字,右侧文字和左边图片垂直居中。目录:一、大结构上的导航栏和内容区域两栏布局1、博客园为例2、腾讯课堂个人中心页3、慕课网个人中心页4、github个人中心页二、mini版的nav+cont结构三、类似九宫格...

    番茄西红柿 评论0 收藏0
  • css - 收藏集 - 掘金

    摘要:绝对底部前端掘金来自国外的设计达人,纯,可以实现当正文内容很少时,底部位于窗口最下面。有效解决图片使用单位边角缺失的问题前端掘金起因在移动端使用布局时图片也需要用单位。 CSS 绝对底部 - 前端 - 掘金来自国外的设计达人,纯CSS,可以实现: 当正文内容很少时,底部位于窗口最下面。当改变窗口高度时,不会出现重叠问题。甚至,创造该CSS的人还专门成立一个网站介绍这个CSS底部布局方案...

    phpmatt 评论0 收藏0
  • CSS3 垂直居中详解

    摘要:但要实现垂直居中确是一大难题。弹性盒子绝对定位视口单位弹性盒子弹性盒子应该是解决垂直居中的最佳方案,随着的逐渐没落,惹人烦的兼容性问题正逐渐被克服。里有一个和一个,想将这两个元素在里垂直居中,同样只需给它们的父元素设和。 CSS里实现水平居中非常容易,inline元素用text-align:center;,block元素用margin:auto;就行了。但要实现垂直居中确是一大难题。本...

    DTeam 评论0 收藏0

发表评论

0条评论

Pikachu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<