3 回答
TA贡献1847条经验 获得超7个赞
灵活的盒子方式
通过使用Flexible box布局,垂直对齐现在非常简单。如今,除了Internet Explorer 8和9之外,这种方法在各种 Web浏览器中都受支持。因此,我们需要使用一些hacks / polyfill或IE8 / 9的不同方法。
在下文中,我将向您展示如何仅在3行文本中执行此操作(无论旧的flexbox语法如何)。
注意:最好使用其他类而不是更改.jumbotron
来实现垂直对齐。我会使用vertical-center
类名作为例子。
<div class="jumbotron vertical-center"> <!-- ^--- Added class --> <div class="container"> ... </div></div>
.vertical-center { min-height: 100%; /* Fallback for browsers do NOT support vh unit */ min-height: 100vh; /* These two lines are counted as one :-) */ display: flex; align-items: center;}
重要说明(在演示中考虑):
或属性的百分比值是相对于父元素的百分比值,因此您应该明确指定父元素的值。
height
min-height
height
height
由于简洁,发布的代码段中省略了供应商前缀/旧的flexbox语法,但在在线示例中存在。
在一些旧的Web浏览器(如我已经测试过的 Firefox 9 )中,flex容器(
.vertical-center
在这种情况下)不会占用父内部的可用空间,因此我们需要指定如下width
属性:width: 100%
。此外,在如上所述的某些Web浏览器中,弹性项目(
.container
在这种情况下)可能不会水平出现在中心。这似乎是正确应用的左/margin
中auto
没有在柔性项目产生任何影响。
因此,我们需要将其对齐box-pack / justify-content
。
有关列的更多详细信息和/或垂直对齐,您可以参考以下主题:
传统Web浏览器的传统方式
这是我在回答这个问题时所写的旧答案。这里已经讨论过这种方法,它也可以在Internet Explorer 8和9中使用。我将简要解释一下:
在内联流中,内联级别元素可以通过vertical-align: middle
声明垂直对齐中间。来自W3C的规格:
middle
将框的垂直中点与父框的基线加上父框的x高度的一半对齐。
如果.vertical-center
在这种情况下父元素 - 具有明确的height
,如果我们可以有一个子元素height
与父元素完全相同,我们就能够将父元素的基线移动到完整的中点。 - 高度的孩子,令人惊讶地让我们想要的流动儿童 - .container
垂直对齐中心。
全力以赴
话虽这么说,我们可以在.vertical-center
by ::before
或::after
pseudo元素中创建一个全高元素,并且还可以更改它的默认display
类型和另一个子 元素.container
to inline-block
。
然后使用vertical-align: middle;
垂直对齐内联元素。
干得好:
<div class="jumbotron vertical-center"> <div class="container"> ... </div></div>
.vertical-center { height:100%; width:100%; text-align: center; /* align the inline(-block) elements horizontally */ font: 0/0 a; /* remove the gap between inline(-block) elements */}.vertical-center:before { /* create a full-height inline block pseudo=element */ content: " "; display: inline-block; vertical-align: middle; /* vertical alignment of the inline element */ height: 100%;}.vertical-center > .container { max-width: 100%; display: inline-block; vertical-align: middle; /* vertical alignment of the inline element */ /* reset the font property */ font: 16px/1 "Helvetica Neue", Helvetica, Arial, sans-serif;}
工作演示。
另外,为了防止意外的问题在额外的小屏幕,你可以将伪元素的高度重置auto
或0
或改变它的display
类型none
,如果需要这样:
@media (max-width: 768px) { .vertical-center:before { height: auto; /* Or */ display: none; }}
还有一件事:
如果容器周围有footer
/ header
部分,最好正确定位元素(relative
,absolute
?由你决定。)并添加更高的z-index
值(以保证)以使它们始终位于其他元素的顶部。
TA贡献1772条经验 获得超8个赞
添加Bootstrap.css然后将其添加到您的CSS
html, body{height:100%; margin:0;padding:0} .container-fluid{ height:100%; display:table; width: 100%; padding: 0;} .row-fluid {height: 100%; display:table-cell; vertical-align: middle;} .centering { float:none; margin:0 auto;}
Now call in your page <div class="container-fluid"> <div class="row-fluid"> <div class="centering text-center"> Am in the Center Now :-) </div> </div></div>
- 3 回答
- 0 关注
- 320 浏览
相关问题推荐
添加回答
举报