我正在为名为 Anki 的抽认卡程序编写模板,该程序使用 QtWebkit 来呈现卡片。
我想将一组三个元素垂直居中在中间元素的中心。元素是动态大小的,应该根据它们的内容增长,但仍然在左边对齐。
到目前为止,我尝试了两种方法,一种是将中间元素居中,然后将顶部和底部元素绝对定位在该中间元素内。不幸的是,这意味着整个元素组不会根据每个元素水平增长,而是仅取决于中间元素的内容。此外,整体尺寸仅达到页面高度和宽度的 50%。
CSS:
.container {
position: absolute;
top: 0;
bottom: 0;
height: 100%;
}
.left {
background-color: green;
left: 0;
right: calc(100% / 3 * 2);
}
.left .middle {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
.left .top {
position: absolute;
bottom: 100%;
left: 0;
}
.left .bottom {
position: absolute;
top: 100%;
left: 0;
}
HTML:
<div class="container left">
<div class="middle">
<div class="top"> ödifj asduflsdfsk<br>j dkfj aölkdsjf df sdf sd f</div>
dgs lk lj lkj lku öoiu ökj df sadlfjslk dsfs df s
<div class="bottom">dfffd gfds gdsf f</div>
</div>
</div>
我尝试的第二个选项是一个 flexbox,justify-content: center;
但这意味着中间元素不是居中的,而是整个元素组。
CSS:
.container {
position: absolute;
top: 0;
bottom: 0;
height: 100%;
}
.center {
background-color: blue;
left: calc(100% / 3);
right: calc(100% / 3);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
HTML:
<div class="container center">
<div class="top"> ödifj asduflsdfsk<br>j dkfj aölkdsjf df sdf sd f</div>
<div class="middle">
dgs lk lj lkj lku öoiu ökj df sadlfjslk dsfs df s
</div>
<div class="bottom">dfffd gfds gdsf f</div>
</div>
再说一遍:3 个元素,作为一组水平居中但在元素的左侧对齐。相对于中间元素垂直居中。并且没有固定的宽度或高度。整个组应与最宽的元素一样宽。