3 回答

TA貢獻1818條經驗 獲得超7個贊
帶上我的 2 美分,您還可以利用display: table|table-row|table-cell來創建此布局(請參閱有關 display 屬性的MDN 文檔以了解更多信息)。
使用這些屬性時的技巧,除非display: flex,是告訴“動作”單元格測量 0.1px,這將迫使單元格盡可能地最小。但是,它不會破壞其內部內容,允許根據內部內容進行動態調整。
由于單元格默認共享空間,因此這種布局可以完成工作,因為“Div A”正在使用剩余的可用空間。
檢查這個JSFiddle或使用下面的代碼片段來玩它。我注釋了您可以調整的屬性。
body {
margin: 0px;
}
.app {
width: 100vw;
height: 100vh;
display: table;
}
.main,
.actions {
display: table-row;
}
.main > div,
.actions > div {
display: table-cell;
vertical-align: middle;
text-align: center;
border-width: 10px; /* tweak this */
border-style: solid; /* tweak this */
}
.main > div {
border-color: purple; /* tweak this */
background-color: violet; /* tweak this */
}
.actions > div {
padding: 20px; /* tweak this */
border-color: blue; /* tweak this */
background-color: lightblue; /* tweak this */
height: 0.1px;
}
.button {
width: 200px; /* tweak this */
padding: 10px; /* tweak this */
}
<div class="app">
<main class="main">
<div>
Div A
</div>
</main>
<footer class="actions">
<div>
<div>
Div B - some text and 2 buttons
</div>
<div>
<button class="button">
Button 1
</button>
</div>
<div>
<button class="button">
Button 2
</button>
</div>
</div>
</footer>
</div>