我想要一个在 CSS 网格内垂直对齐的巨大进度条。
问题是,CSS 网格内的垂直对齐对我不起作用。我在 Firefox 上试过,也在 Chrome 上试过。
我试过 vertical-align: middle
,但它不起作用。我在网格项目中放置了一个 Flexbox,但它仍然无法正常工作。
这是我的最小示例:
.wrapper {
display: grid;
border-style: solid;
border-color: red;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(4, 1fr);
grid-gap: 10px;
width: 100vw;
height: 100vh;
}
.one {
border-style: solid;
border-color: blue;
grid-column: 1 / 3;
grid-row: 1 / 2;
}
.two {
border-style: solid;
border-color: yellow;
grid-column: 1 / 3;
grid-row: 2 / 4;
}
.three {
border-style: solid;
border-color: violet;
grid-column: 1;
grid-row: 4 / 5;
}
.four {
border-style: solid;
border-color: aqua;
grid-column: 2;
grid-row: 4 / 5;
}
progress {
width: 100%;
background-color: #f3f3f3;
border: 0;
height: 2em;
}
<div class="wrapper">
<div class="one">One</div>
<div class="two">
<div class="vertical">
<progress max="100" value="80">
<div class="progress-bar">
<span style="width: 80%;">Progress: 80%</span>
</div>
</progress>
</div>
</div>
<div class="three"> Three</div>
<div class="four">Four</div>
</div>
演示: https ://codepen.io/anon/pen/OOpdPW
如何垂直对齐上述演示项目的进度条(在其网格项内)?
原文由 arcol 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于 Flexbox 解决方案,您必须将
display:flex
和align-items: center
添加到 .two ,因此 CSS 变成这样:然后将
flex: 1
添加到 .vertical :这是完整的代码: