我试图将我的选项卡内容垂直居中,但是当我添加 CSS 样式 display:inline-flex
时,水平文本对齐消失了。
如何为每个选项卡同时对齐文本 x 和 y?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
原文由 shuji 发布,翻译遵循 CC BY-SA 4.0 许可协议
transform
translateX
/translateY
:此处示例/ 全屏示例
在 支持的浏览器(大多数浏览器)中,您可以使用
top: 50%
/left: 50%
结合translateX(-50%) translateY(-50%)
来动态对齐元素/水平线。此处示例/ 全屏示例
In supported browsers , set the
display
of the targeted element toflex
and usealign-items: center
for vertical centering andjustify-content: center
for horizontal centering.只是不要忘记添加供应商前缀以获得额外的浏览器支持( 参见示例)。请记住,父容器也需要高度(在本例中为 100%)。table-cell
/vertical-align: middle
:此处示例/ 全屏示例
在某些情况下,您需要确保
html
/body
元素的高度设置为100%
。For vertical alignment, set the parent element’s
width
/height
to100%
and adddisplay: table
.然后对于子元素,将display
更改为table-cell
并添加vertical-align: middle
。对于水平居中,您可以添加
text-align: center
以居中文本和任何其他inline
子元素。或者,您可以使用margin: 0 auto
,假设元素是block
级别。50%
从顶部位移:此处示例/ 全屏示例
此方法假定文本具有已知高度 - 在本例中为
18px
。绝对定位元素50%
从顶部开始,相对于父元素。使用负值margin-top
元素已知高度的一半,在本例中为 --9px
。line-height
方法(最不灵活 - 不建议):这里的例子
在某些情况下,父元素将具有固定高度。对于垂直居中,您所要做的就是在子元素上设置一个
line-height
值等于父元素的固定高度。尽管此解决方案在某些情况下会起作用,但值得注意的是,当有多行文本时它不会起作用 - 就像这样。