vertical-align:middle水平垂直居中(填坑版)

利用vertical-align实现水平垂直居中的方案,网上很多。
具体实现,大家可以先通过//www.greatytc.com/p/dea069fecb62了解。
我这里想讲的是网上大部分利用vertical-align进行水平垂直居中的方案,其实都不是真正的水平垂直居中
本文只适合明白了利用vertical-align进行居中方案的前端er进行阅读,如果具体实现原理不懂的,请先看上段的链接。

话不多说,先上基本的实现方案:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
      * {
          margin: 0;
          padding: 0;
      }
      .wrapper {
          width: 25vw;
          height: 50vh;
          background-color: #0cc;
          text-align: center;
      }

      .box {
          width: 5vw;
          height: 10vh;
          background-color: #BFA;
          display: inline-block;
          vertical-align: middle;
          margin: 0 auto;
      }

      .wrapper::after {
          display: inline-block;
          vertical-align: middle;
          content: "";
          height: 100%;
          width: 0;
      }
  </style>
</head>
<body>
<div class="wrapper">
  <div class="box"></div>
</div>
</body>
</html>

我这里是通过给需要水平垂直居中的元素的父元素添加伪元素来进行实现的,相比于直接给父元素添加一个子元素,添加伪元素的方式使代码更简洁,易于维护。
嗯,代码写到这里。就已经实现了“垂直水平居中”了,至少曾经的我也是这么认为的。然而,通过改变伪元素的位置,我惊了:


x.gif

证明其实所谓的水平垂直居中只是肉眼层面上的,严格来讲,根本没有达到水平居中。
我陷入思考中,难道是伪元素的问题?于是我换成普通元素实现也是一样出现同样问题。当我深深的陷入自闭中时,我突然想到两个inline-block元素的间隙问题:

inline-blcok块之间的不可见符号会被保留父层字体的1/3大小的空间

因此解决方案呼之欲出:将父元素的字体大小设置为0

.wrapper {
            width: 25vw;
            height: 50vh;
            background-color: #0cc;
            text-align: center;
            font-size: 0;
        }

但设置字体大小难免会增大代码量或影响样式,于是更好的解决方案是样式不变,而是改变书写结构。

<body>
<div class="wrapper"><div class="box"></div></div>
</body>

综上,水平垂直居中无瑕疵实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,215评论 3 30
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,814评论 1 92
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,664评论 0 30
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,630评论 0 26
  • 今日工作 今天工作效率比较低,想看下Spanner论文的,但发现自己不知道怎么回事看不进去。Cockroach的源...
    张清伟阅读 527评论 0 0