Vla*_*irs 125 html css absolute vertical-alignment
我试图在粉红色的容器中间获得蓝色容器,但是vertical-align: middle;在这种情况下似乎不能完成工作.
<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>
Run Code Online (Sandbox Code Playgroud)
结果:

期望:

请建议我如何实现这一目标.
Has*_*ami 287
首先请注意,vertical-align它仅适用于表格单元格和内联级元素.
有几种方法可以实现垂直对齐,这可能会或可能不会满足您的需求.不过我会向你展示我最喜欢的两种 方法:
transform和top.valign {
position: relative;
top: 50%;
transform: translateY(-50%);
/* vendor prefixes omitted due to brevity */
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
关键点是百分比值top是相对于height包含块的百分比值; 虽然transforms 上的百分比值是相对于框本身的大小(边界框).
如果遇到字体渲染问题(模糊字体),修复方法是添加perspective(1px)到transform声明中,使其变为:
transform: perspective(1px) translateY(-50%);
Run Code Online (Sandbox Code Playgroud)
值得注意的transform 是,IE9 +支持 CSS .
inline-block(伪)元素在这个方法中,我们有两个兄弟inline-block元素,通过vertical-align: middle声明在中间垂直对齐.
其中一人拥有height的100%其父的,另一种是我们谁我们想在中间对齐所需的元素.
.parent {
text-align: left;
position: absolute;
height: 56px;
background-color: pink;
white-space: nowrap;
font-size: 0; /* remove the gap between inline level elements */
}
.dummy-child { height: 100%; }
.valign {
font-size: 16px; /* re-set the font-size */
}
.dummy-child, .valign {
display: inline-block;
vertical-align: middle;
}Run Code Online (Sandbox Code Playgroud)
<div style="position: absolute; left: 50px; top: 50px;">
<div class="parent">
<div class="dummy-child"></div>
<div class="valign" style="background-color: lightblue;">test</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
最后,我们应该使用一种可用的方法来消除内联级元素之间的差距.
小智 44
用这个 :
.Absolute-Center {
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}
Run Code Online (Sandbox Code Playgroud)
请参考此链接:https://www.smashingmagazine.com/2013/08/absolute-horizontal-vertical-centering-css/
Chr*_*cht 17
在absoutely定位div中使用flex blox以使其内容居中.
请参阅示例https://plnkr.co/edit/wJIX2NpbNhO34X68ZyoY?p=preview
.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;
}
Run Code Online (Sandbox Code Playgroud)
Kar*_*yal 16
仅适用于垂直居中
<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>Run Code Online (Sandbox Code Playgroud)
我总是喜欢这样做,这是一个非常短且简单的代码,可以水平和垂直居中
.center{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}Run Code Online (Sandbox Code Playgroud)
<div class="center">Hello Centered World!</div>Run Code Online (Sandbox Code Playgroud)
垂直和水平居中:
.parent{
height: 100%;
position: absolute;
width: 100%;
top: 0;
left: 0;
}
.c{
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用display:table/table-cell;
.a{
position: absolute;
left: 50px;
top: 50px;
display:table;
}
.b{
text-align: left;
display:table-cell;
height: 56px;
vertical-align: middle;
background-color: pink;
}
.c {
background-color: lightblue;
}Run Code Online (Sandbox Code Playgroud)
<div class="a">
<div class="b">
<div class="c" >test</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150575 次 |
| 最近记录: |