2017-07-29 71 views
0

我在相对文本包装中放置了绝对定位文本,我希望它以垂直和水平居中。问题是,文本不会居中,因为宽度和高度会自动填充容器。我该如何解决这个问题,以便文本可以在div中垂直和水平居中?文本包装div中的绝对定位文本的宽度和高度卡在包装的100%

JSFiddle

HTML

<div class="text-wrap"> 
    <h3>Hello</h3> 
</div> 

CSS

.text-wrap { 
    height: 200px; 
    width: 120px; 
    position: relative; 
    border: 1px solid black; 
} 

.text-wrap h3 { 
    position: absolute; 
    margin: auto; 
    left:0; 
    right:0; 
    top:0; 
    bottom: 0; 
} 

回答

2

更改为按如下方式居中绝对元素的CSS规则(移动它的左上角到容器的中心,然后将其向上移动并留下其自身宽度/高度的一半,由此使其居中)

.text-wrap { 
 
    height: 200px; 
 
    width: 120px; 
 
    position: relative; 
 
    border: 1px solid black; 
 
} 
 

 
.text-wrap h3 { 
 
    position: absolute; 
 
    margin: 0; 
 
    padding: 0; 
 
    left: 50%; 
 
    top: 50%; 
 
    transform: translate(-50%, -50%); 
 
    
 
}
<div class="text-wrap"> 
 
    <h3>Hello</h3> 
 
</div>

+0

好这一工程,三江源。任何修补程序,但旧版浏览器? –

+0

几岁? ;-)那么,在*真的*旧的浏览器中,你可以使容器成为'表格单元格'并对其应用'text-align:center'和'vertical-align:middle'。 (而不是根本就不使用容器作为内部文本) – Johannes

0

试试这个

.text-wrap { 
    height: 200px; 
    width: 120px; 
    position: relative; 
    border: 1px solid black; 
} 

.text-wrap h3 { 
    margin: 0; 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    -ms-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 
} 
相关问题