How to center an element horizontally and vertically
我试图将标签内容垂直居中,但当我添加CSS样式
如何使每个选项卡的文本对齐X和Y?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | * { 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; } |
1 2 | first second |
- 方法:1
transform translateX /translateY 这里的例子/全屏幕的例子
在支持的浏览器(大多数的人),你可以使用一个
left: 50% top: 50% /组合/ horizontally dynamicallytranslateX(-50%) translateY(-50%) 到垂直中心位置的元素。
1 2 3 4 5 6 7 8 | .container { position: absolute; top: 50%; left: 50%; -moz-transform: translateX(-50%) translateY(-50%); -webkit-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); } |
1 | <span>I'm vertically/horizontally centered!</span> |
- 方法2:flexbox法
这里的例子/全屏幕的例子
在支持的浏览器的设置,一个元素的
display flex align-items: center 靶向和使用垂直和水平为中心justify-content: center 为中心。只是不要忘记添加额外的浏览器支持供应商前缀(湖的例子)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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; } |
1 | <span>I'm vertically/horizontally centered!</span> |
- 方法:3
table-cell /vertical-align: middle 这里的例子/全屏幕的例子
在某些情况下,你需要确保的是,
html 元/body 的身高是设置为100% 。为垂直排列,设置父元素的
width /height 到100% display: table 和添加。然后在子元素,改变display 到table-cell vertical-align: middle 和添加。中心的水平,你可以添加到任何
text-align: center 中心文本和任何其他元素inline 儿童。你也可以使用,如果是block margin: 0 auto ,在元件的水平。
1 2 3 4 5 6 7 8 9 10 11 12 13 | html, body { height: 100%; } .parent { width: 100%; height: 100%; display: table; text-align: center; } .parent > .child { display: table-cell; vertical-align: middle; } |
1 2 3 | <section class="parent"> I'm vertically/horizontally centered! </section> |
- 方法4的位置是在一个
50% 顶位移:这里的例子/全屏幕的例子
本方法是,assumes a known高。文本在本实例,
18px 。只是绝对定位的元素从上到50% 相对父元素。这是使用一个负价值的margin-top 帮助已知元素的高度,在这-9px 案例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | html, body, .container { height: 100%; } .container { position: relative; text-align: center; } .container > p { position: absolute; top: 50%; left: 0; right: 0; margin-top: -9px; } |
1 2 3 | <p> I'm vertically/horizontally centered! </p> |
- 方法5
line-height (最小二乘法的柔性不建议):这里的例子
在某些情况下,要有一个固定的父元素的高度。为垂直中心,所有你需要做的是设置一个
line-height 价值相等的子元素的父元素的固定高度。我想我在这个解决方案工作,值得记录,它不工作,当有多线样本的文本。
1 2 3 4 5 6 7 8 9 10 | .parent { height: 200px; width: 400px; background: lightgray; text-align: center; } .parent > .child { line-height: 200px; } |
1 | <span class="child">I'm vertically/horizontally centered!</span> |
如果CSS3(或是你有一个选择:你可以使用变换后)
1 2 3 4 5 6 | .center { right: 50%; bottom: 50%; transform: translate(50%,50%); position: absolute; } |
不同于上述第一法,你不想使用左:50%的翻译,因为它在负溢出的错误在IE9的+。使用积极的价值和你不会有水平滚动条滚动条湖。
最好的办法是和horizontally垂直中心一箱,是使用两个容器:
在原料容器
- 要
display: table;
容器的内部。
- 要
display: table-cell; - 要
vertical-align: middle; - 要
text-align: center;
盒内容:
- 要
display: inline-block; - 应调整水平对齐文本,除非你想要的文本为中心
演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | body { margin : 0; } .outer-container { display: table; width: 80%; height: 120px; background: #ccc; } .inner-container { display: table-cell; vertical-align: middle; text-align: center; } .centered-content { display: inline-block; text-align: left; background: #fff; padding : 20px; border : 1px solid #000; } |
1 | Center this! |
因此,这个湖的小提琴!
中心中页面:
中心内容到你的页面中,添加以下到您的原料容器
position : absolute; width: 100%; height: 100%;
这是一个演示的那个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | body { margin : 0; } .outer-container { position : absolute; display: table; width: 100%; height: 100%; background: #ccc; } .inner-container { display: table-cell; vertical-align: middle; text-align: center; } .centered-content { display: inline-block; text-align: left; background: #fff; padding : 20px; border : 1px solid #000; } |
1 | Center this! |
因此,这个湖的小提琴!
运行此代码段A和湖和horizontally垂直对准。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | html, body, .container { height: 100%; width: 100%; } .container { display: flex; align-items: center; justify-content: center; } .mydiv { width: 80px; } |
1 | h & v aligned |
最简单的解决方案是与我交物业使用CSS3的"变换":
1 2 3 4 5 6 7 8 9 | .container { position: relative; } .container a { position: absolute; top: 50%; transform: translate(0,-50%); } |
1 | Hello world! |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | .align { display: flex; width: 400px; height: 400px; border: solid 1px black; align-items: center; justify-content: space-around; } .align div:first-child { width: 20px; height: 20px; background-color: red; position: absolute; } .align div { width: 20px; height: 20px; background-color: blue; } |
1 |
第一个子项将在中心垂直和水平对齐
另一种方法是使用表格:
1 2 3 4 5 | <table style="width:100%; height:100%"> <tr style="height:100%"> <td style="height:100%; text-align:center">hello, multiple lines here, this is super long, and that is awesome, dude</td> </tr> </table> |
一个中心位置在A页面的div check link小提琴
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #vh { border-radius: 15px; box-shadow: 0 0 8px rgba(0, 0, 0, 0.4); padding: 25px; width: 200px; height: 200px; background: white; text-align: center; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; } |
1 | Div to be aligned vertically |
更新另一个选项是使用Flex的link check小提琴盒
1 2 3 4 5 6 7 8 9 10 11 | .vh { background-color: #ddd; height: 200px; align-items: center; display: flex; } .vh > div { width: 100%; text-align: center; vertical-align: middle; } |
1 | Div to be aligned vertically |
下面是Flex盒所需的方法得到的结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> Flex-box approach <style> .tabs{ display: -webkit-flex; display: flex; width: 500px; height: 250px; background-color: grey; margin: 0 auto; } .f{ width: 200px; height: 200px; margin: 20px; background-color: yellow; margin: 0 auto; display: inline; /*for vertically aligning */ top: 9%; /*for vertically aligning */ position: relative; /*for vertically aligning */ } </style> </head> <body> first second </body> </html> |
为了使元素垂直和水平居中,我们还可以使用下面提到的属性。
此css属性垂直对齐项目并接受以下值:
弹性开始:项目与容器顶部对齐。
柔性端:物品与容器底部对齐。
中心:项目在容器的垂直中心对齐。
基线:项显示在容器的基线处。
拉伸:拉伸物品以适合容器。
此css属性调整内容,内容水平对齐并接受以下值:
柔性启动:项目与容器左侧对齐。
柔性端:物品与容器右侧对齐。
中心:项目在容器的中心对齐。
间隔:项目之间的间隔相等。
周围间距:项目周围显示的间距相等。
以下是如何使用2个简单的flex属性使n个div在2个轴上居中:
- 设置容器的高度:这里的主体被设置为至少100vh。
align-items: center 将垂直居中块体。justify-content: space-around 将在分隔带周围分配自由水平空间。
1 2 3 4 5 6 | body { min-height: 100vh; display: flex; align-items: center; justify-content: space-around; } |
1 2 | foo bar |
网格CSS方法
1 2 3 4 5 6 7 8 9 10 11 12 13 | #wrapper { position: absolute; top: 0; bottom: 0; right: 0; left: 0; display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); } .main { background-color: #444; } |
1 |
您可以使用css(您的元素
请参见下面的代码段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #leftFrame { display: flex; height: 100vh; width: 100%; } #tabs { display: inline-grid; grid-auto-flow: row; grid-gap: 24px; justify-items: center; margin: auto; } html,body { margin:0; padding:0; } |
1 2 | first second |
- 方法6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /*Change units to"%","px" or whatever*/ #wrapper{ width: 50%; height: 70vh; background: rgba(0,0,0,.5); position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; } #left{ width: 50%; height: 50vh; position: absolute; top: 0; bottom: 0; left: 0; margin: auto; background: red; } #right{ width: 50%; height: 50vh; position: absolute; top: 0; bottom: 0; right: 0; margin: auto; background: green; } .txt{ text-align: center; line-height: 50vh; } |
1 2 | Left Right |
1 2 3 4 5 6 7 8 9 10 | .container{ width: 50%; //Your container width here height: 50%; //Your container height here position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; } |
垂直和水平居中DIV的最简单方法如下:
1 | Text Here |
再举一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | .parent { display: table; width: 100%; height: 100%; } .child { display: table-cell; vertical-align: middle; text-align: center; } <h4><u>SERVICE IN BANGLADESH FLEET RESERVE AND RE-ENGAGEMENT ORDER FOR DEFENCE SERVICE</u></h4> |
简单!在容器上使用display flex,在文本上使用margin auto!!!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #hood{ width : 300px; height: 100px; border: solid 1px #333333; display: flex; } #hood span{ margin: auto } <html> <head></head> <body> <span> I Am Centered</span> </body> </html> |
演示:https://jsfiddle.net/ay95f08g/
测试:MacOS Mojave上的Safari、Chrome、Firefox和Opera。(所有最新更新日期为2019年2月25日)
只需将顶部、底部、左侧和右侧设置为0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <html> <head> <style> { position: absolute; margin: auto; background-color: lightblue; width: 100px; height :100px; padding: 25px; top :0; right :0; bottom:0; left:0; } </style> </head> <body> I am in the middle </body> </html> |
这应该管用
1 2 3 4 5 6 7 8 | .center-div { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; min-height: 100vh; } |
1 | Center Div |
源链接
Method 1) Display type flex
1
2
3
4
5 .child-element{
display: flex;
justify-content: center;
align-items: center;
}Method 2) 2D Transform
1
2
3
4
5
6 .child-element {
top: 50%;
left: 50%;
transform: translate(-50% , -50%);
position: absolute;
}
请参阅此处的其他方法