垂直对齐 100vh 容器内的文本

Vertically align text inside 100vh container

我已经尝试了我能找到的关于这个主题的所有建议方法,但无法使任何方法起作用。我使用 vertical-align/line-height 方法垂直对齐图像,但不知道如何垂直对齐文本框。

-- url 问题解决后删除 --

向下滚动到第二个或第三个问题,查看我需要的页面类型示例。我希望比我更有经验的人可以立即发现我哪里出错了,如果有帮助,我可以提供相关的代码片段。

提前致谢

将文本放入包含 div 的容器中,并赋予 div 以下样式(注意 100vh 容器需要非静态定位):

.vertical-center{
    position: absolute;
    top:50%;
    left: 0%;
    transform:translate(0%, -50%);
    -webkit-transform:translate(0%, -50%);
}

如果 100vh 容器小于文本占用的区域,这将崩溃,因此需要适当的 min-height

Flexbox 消除了很多布局的痛苦,垂直居中就是其中之一。

方法一:

.container {
  height: 100vh;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
}

方法二:

.container {
  height: 100vh;
  -webkit-flex-flow: column wrap;
  -ms-flex-flow: column wrap;
  flex-flow: column wrap;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack:center;
  -webkit-justify-content:center;
  -ms-flex-pack:center;
  justify-content:center;
}

您的 HTML 必须如下所示:

<div class="container">

   <div>
      whatever content you want (including nested div's, other elements) goes in here
   </div>

</div><!-- .container -->

这可能是最简单的方法。在你的 div 中有 height: 100vh; 添加行高 100vh:

.hero{
  height: 100vh;
  line-height: 100vh;
}

然后在包含您的文本的 div 中确保它看起来像这样。

.hero-caption{
  text-align: center;
  display: inline-block;
  vertical-align: middle;
  line-height:1.5em;
  margin: 0 auto;
  float: none;
  width:100%;
}

现在,如果您正在使用 Bootstrap,请执行以下操作。

HTML:

<header>
  <div class="col-md-12 caption">
    <h1>Hello World, Hi World</h1>
  </div>
</header>

CSS

header{
  background: blue;
  color: white;
  height: 100vh;
  line-height: 100vh;
}

.caption{
  text-align: center;
  display: inline-block;
  vertical-align: middle;
  line-height:1.5em;
  margin: 0 auto;
  float: none;
}