css垂直居中问题

  1. 父元素不定宽高,子元素不定宽高,如何让子元素垂直居中显示?

  2. 父元素不定宽高,子元素定宽度,如何让子元素垂直居中显示?

阅读 3.8k
9 个回答

父元素

div{
    display:flex;
    justify-content:center;
    align-items:center;
}

很多答案...我随手写一个我常用的..

child{
    top: 50%;
    transform: transformY(-50%);
}

需要IE9+

父元素还是要有个高的吧,要不不等高了吗

        <style type="text/css">
            .wrap {
              position: relative;
              width: 100%;
              height: 200px;
              background-color: #ccc;
            }
            .wrap .inner {
              position: absolute;
              left: 50%;
              top: 50%;
              background-color: #333;
              -webkit-transform: translate(-50%, -50%);
              transform: translate(-50%, -50%);
            }
        </style>
    </head>
    <body>
        <div class="wrap">
          <div class="inner">
              水平垂直居中水平垂直居中<br/>
          </div>
        </div>
    </body>

第二条,子元素定宽,与垂直居中有关系吗?
楼主这样的需求貌似只要给父元素设置需要的padding就可以了。

最好把场景列出来,能满足你现在条件的我觉得就一个padding

下次贴代码才知道你遇到的是什么问题,这种很多解决方案

楼主的意思是这些宽高不是在css里面写死,而是在具体执行时会有具体的结果。
第二个答案比较全面,其中有符合楼主需求的绝对定位+反向偏移,table-cell,弹性盒子三种方案,如果不考虑老旧浏览器的话都可以使用。
补充一点:table-cell里面的内容不用套壳。另外我以前用过一种最笨的方法————绝对定位+js计算(这个兼容性绝对好:)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题