How to center an element horizontally and vertically(如何使元素水平和垂直居中)
问题描述
我试图将标签内容垂直居中,但是当我添加 CSS 样式 display:inline-flex
时,水平文本对齐消失了.
I am trying to center my tabs content vertically, but when I add the CSS style display:inline-flex
, the horizontal text-align disappears.
如何为每个选项卡设置 x 和 y 文本对齐方式?
How can I make both text alignments x and y for each of my tabs?
* { 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>
推荐答案
方法一 -
transform
translateX
/translateY
:此处示例/全屏示例
在支持的浏览器(大部分)中,可以使用
top: 50%
/left: 50%
结合translateX(-50%) translateY(-50%)
动态地垂直/水平居中元素.In supported browsers (most of them), you can use
top: 50%
/left: 50%
in combination withtranslateX(-50%) translateY(-50%)
to dynamically vertically/horizontally center the element..container { position: absolute; top: 50%; left: 50%; -moz-transform: translateX(-50%) translateY(-50%); -webkit-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); }
<div class="container"> <span>I'm vertically/horizontally centered!</span> </div>
方法 2 - Flexbox 方法:
此处示例/全屏示例
在支持的浏览器中,将目标元素的
display
设置为flex
并使用align-items: center
进行垂直居中,使用justify-content: center
进行水平居中.只是不要忘记添加供应商前缀以获得额外的浏览器支持(查看示例).In supported browsers, set the
display
of the targeted element toflex
and usealign-items: center
for vertical centering andjustify-content: center
for horizontal centering. Just don't forget to add vendor prefixes for additional browser support (see example).html, body, .container { height: 100%; } .container { display: -webkit-flexbox; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-flex-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; justify-content: center; }
<div class="container"> <span>I'm vertically/horizontally centered!</span> </div>
方法3 -
table-cell
/vertical-align: middle
:此处示例/全屏示例
在某些情况下,您需要确保
html
/body
元素的高度设置为100%
.In some cases, you will need to ensure that the
html
/body
element's height is set to100%
.对于垂直对齐,将父元素的
width
/height
设置为100%
并添加display:table
.然后对于子元素,将display
更改为table-cell
并添加vertical-align: middle
.For vertical alignment, set the parent element's
width
/height
to100%
and adddisplay: table
. Then for the child element, change thedisplay
totable-cell
and addvertical-align: middle
.对于水平居中,您可以添加
text-align: center
以使文本和任何其他inline
子元素居中.或者,您可以使用margin: 0 auto
,假设元素是block
级别.For horizontal centering, you could either add
text-align: center
to center the text and any otherinline
children elements. Alternatively, you could usemargin: 0 auto
, assuming the element isblock
level.html, body { height: 100%; } .parent { width: 100%; height: 100%; display: table; text-align: center; } .parent > .child { display: table-cell; vertical-align: middle; }
<section class="parent"> <div class="child">I'm vertically/horizontally centered!</div> </section>
方法 4 - 绝对定位
50%
距离顶部有位移:此处示例/全屏示例
Approach 4 - Absolutely positioned
50%
from the top with displacement:Example Here / Full Screen Example
此方法假定文本具有已知高度 - 在本例中为
18px
.相对于父元素,从顶部绝对定位元素50%
.使用一个负的margin-top
值,该值是元素已知高度的一半,在本例中为-9px
.This approach assumes that the text has a known height - in this instance,
18px
. Just absolutely position the element50%
from the top, relative to the parent element. Use a negativemargin-top
value that is half of the element's known height, in this case --9px
.html, body, .container { height: 100%; } .container { position: relative; text-align: center; } .container > p { position: absolute; top: 50%; left: 0; right: 0; margin-top: -9px; }
<div class="container"> <p>I'm vertically/horizontally centered!</p> </div>
方法 5 -
line-height
方法(最不灵活 - 不建议):此处示例
Approach 5 - The
line-height
method (Least flexible - not suggested):Example Here
在某些情况下,父元素会有一个固定的高度.对于垂直居中,您所要做的就是在子元素上设置一个
line-height
值,使其等于父元素的固定高度.In some cases, the parent element will have a fixed height. For vertical centering, all you have to do is set a
line-height
value on the child element equal to the fixed height of the parent element.虽然此解决方案在某些情况下会起作用,但值得注意的是,当有多行文本时它不起作用 - 像这样.
Though this solution will work in some cases, it's worth noting that it won't work when there are multiple lines of text - like this.
.parent { height: 200px; width: 400px; background: lightgray; text-align: center; } .parent > .child { line-height: 200px; }
<div class="parent"> <span class="child">I'm vertically/horizontally centered!</span> </div>
这篇关于如何使元素水平和垂直居中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使元素水平和垂直居中
基础教程推荐
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 响应更改 div 大小保持纵横比 2022-01-01
- 动态更新多个选择框 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01