我试图在粉色的中间得到蓝色的容器,但是在这种情况下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>
结果:
期望值:
请建议我如何实现这一点。
发布于 2015-02-11 22:24:23
首先请注意,vertical-align
只适用于表格单元格和内联级别的元素。
有几种方法可以实现垂直对齐,这些方法可能满足您的需求,也可能不满足您的需求。不过,我将向您展示我最喜欢的two methods:
1.使用transform
和top
.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>
关键点是,top
上的百分比值是相对于包含块的height
的;而transform
s上的百分比值是相对于框本身(边界框)的大小。
如果您遇到font rendering issues (模糊字体),修复方法是将perspective(1px)
添加到transform
声明中,这样它就变成了:
transform: perspective(1px) translateY(-50%);
值得注意的是,CSS transform
is supported in IE9+。
2.使用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;
}
<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>
最后,我们应该使用其中的一个available methods to remove the gap between inline-level elements。
发布于 2016-11-25 18:54:00
使用以下命令:
.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/
发布于 2016-06-06 05:55:00
在随意定位的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;
}
https://stackoverflow.com/questions/28455100
复制相似问题