我試圖讓藍色容器位于粉色容器的中間,但是看起來是垂直對齊的:中間;在那種情況下不起作用。
<div style="display: block; position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;vertical-align: middle;background-color: pink;">
<div style="background-color: lightblue;">test</div>
</div>
</div>
結果:
期望:
請建議我如何才能做到這一點。
Jsfiddle
首先注意,垂直對齊只適用于表格單元格和行內元素。
有幾種方法可以實現垂直對齊,可能滿足也可能不滿足您的需求。不過,我將向您展示我最喜歡的兩種方法:
1.使用變換和頂部
.valign {
position: relative;
top: 50%;
transform: translateY(-50%);
/* vendor prefixes omitted due to brevity */
}
<div style="position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;background-color: pink;">
<div class="valign" style="background-color: lightblue;">test</div>
</div>
</div>
用這個:
.Absolute-Center {
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}
參考此鏈接:https://www . smashingmagazine . com/2013/08/absolute-horizontal-vertical-centering-CSS/
在定位準確的div中使用flex blox使其內容居中。
參見示例https://plnkr.co/edit/wJIX2NpbNhO34X68ZyoY? p =預覽
.some-absolute-div {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
-moz-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
-moz-align-items: center;
align-items: center;
}
垂直和水平居中:
.parent{
height: 100%;
position: absolute;
width: 100%;
top: 0;
left: 0;
}
.c{
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
}
僅用于垂直居中
<div style="text-align: left; position: relative;height: 56px;background-color: pink;">
<div style="background-color: lightblue;position:absolute;top:50%; transform: translateY(-50%);">test</div>
</div>
編輯:10/22目前,display flex或grid已被廣泛應用,我建議使用其中的一種(如果您需要兼容舊的或特殊的瀏覽器,如我的電視,display:table/table-cell仍可使用...)
彎曲
.a{
position: absolute;
left: 50px;
top: 50px;
}
.b{
display:flex;
align-items:center;
background-color: pink;
height: 56px;
}
.c {
background-color: lightblue;
}
/* move the flex demo aside */
.a.b{left:100px}
You even need less markup
<div class="a">
<div class="b">
<div class="c">test</div>
</div>
</div>
<div class="a b">
<div class="c">test</div>
</div>
這是使用頂部對象的簡單方法。
例如:如果絕對元素大小是60px。
.absolute-element {
position:absolute;
height:60px;
top: calc(50% - 60px);
}
另一個簡單的解決方案
HTML:
<div id="d1">
<div id="d2">
Text
</div>
</div>
CSS:
#d1{
position:absolute;
top:100px;left:100px;
}
#d2{
border:1px solid black;
height:50px; width:50px;
display:table-cell;
vertical-align:middle;
text-align:center;
}
你可以用display:table;在父div和顯示中:表格單元;垂直對齊:居中;在子分區中
<div style="display:table;">
<div style="text-align: left; height: 56px; background-color: pink; display: table-cell; vertical-align: middle;">
<div style="background-color: lightblue; ">test</div>
</div>
</div>
就我而言,
centered-vertically {
height: 60px;
display: flex;
justify-content: center;
-webkit-align-items: center;
}
工作
使絕對項目垂直和水平居中的更簡單的方法是使用& quot插圖& quot財產。
.center-horizontally-vertically{
position: absolute;
inset: 0;
margin: auto;
}
<div class="center-horizontally-vertically">
Test
</div>