這是我的代碼(解釋後):https://jsfiddle.net/L7a35dda/1/設置一個div的高度等於計算寬度
body {
width: 1920px;
height: 1080px;
background-color: rgb(48, 48, 48);
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: flex-start;
align-content: flex-start;
}
/* Overall Styles */
.group-container {
display: flex;
flex-direction: column;
}
.group-header {
height: 40px;
background-color: rgb(21, 101, 192);
}
.group-body {
flex-grow: 1;
display: flex;
}
.tile {
display: flex;
flex-direction: column;
}
.tile-header {
background-color: rgb(25, 118, 210);
}
.tile-body {
flex-grow: 1;
}
/* Group 1 */
#group-1 {
width: 50%;
order: 1;
border-right: 3px solid black;
border-bottom: 3px solid black;
}
#group-1 .group-body {
flex-wrap: wrap;
align-items: flex-start;
align-content: flex-start;
}
#group-1 .tile {
width: calc(100%/3);
height: 300px; /* Placeholder: Actual value needs to be equal to width */
}
/* Group 2 */
#group-2 {
width: 50%;
order: 2;
flex-grow: 1;
border-right: 3px solid black;
border-top: 3px solid black;
}
#group-2 .group-body {
flex-direction: column;
align-items: flex-start;
}
#group-2 .tile {
flex-grow: 1;
width: 100%;
height: 100%;
}
/* Group 3 */
#group-3 {
width: 50%;
height: 100%;
order: 3;
border-left: 3px solid black;
}
#group-3 .group-body {
flex-direction: column;
}
#group-3 .tile {
flex-grow: 1;
width: 100%;
height: 100%;
}
<div id="group-1" class="group-container">
<div class="group-header">Group 1</div>
<div class="group-body">
<div class="tile">
<div class="tile-header">Tile 1A</div>
<iframe class="tile-body"></iframe>
</div>
<div class="tile">
<div class="tile-header">Tile 1B</div>
<iframe class="tile-body"></iframe>
</div>
<div class="tile">
<div class="tile-header">Tile 1C</div>
<iframe class="tile-body"></iframe>
</div>
<div class="tile">
<div class="tile-header">Tile 1D</div>
<iframe class="tile-body"></iframe>
</div>
<div class="tile">
<div class="tile-header">Tile 1E</div>
<iframe class="tile-body"></iframe>
</div>
<div class="tile">
<div class="tile-header">Tile 1F</div>
<iframe class="tile-body"></iframe>
</div>
</div>
</div>
<div id="group-2" class="group-container">
<div class="group-header">Group 2</div>
<div class="group-body">
<div class="tile">
<div class="tile-header">Tile 2A</div>
<iframe class="tile-body"></iframe>
</div>
<div class="tile">
<div class="tile-header">Tile 2B</div>
<iframe class="tile-body"></iframe>
</div>
</div>
</div>
<div id="group-3" class="group-container">
<div class="group-header">Group 3</div>
<div class="group-body">
<div class="tile">
<div class="tile-header">Tile 3A</div>
<iframe class="tile-body"></iframe>
</div>
</div>
</div>
上面的代碼的目的是將屏幕分爲三組磚:
- 組3佔據屏幕的整個右側 - 其寬度可配置(目前設置爲50%)。它的內容可以忽略不計,因爲它目前是未來發展的佔位符。
- 組1佔據了屏幕左側的剩餘部分的上部,其中包含6個方形的3x2佈局的瓷磚。每個瓷磚的寬度應該相等。
- 組2填滿組1下的最後剩餘空間。它在垂直佈局中具有2個瓦片,跨越整個可用寬度和高度,在它們之間均勻分佈垂直空間。
所以代碼似乎做了我需要它做的一切,除了我需要組1瓷磚爲正方形的部分。我目前正在將它作爲這個問題的佔位符進行硬編碼 - 這在實際產品中是無法完成的,因爲它將通過網絡部署到多臺計算機上,呈現在不同屏幕分辨率的不同介質上。
我應該如何更改我的代碼以實現此目的?
編輯:將問題標題從iframe更改爲div,因爲問題最初是針對該問題的,儘管最終發佈的問題是針對tile div。
當你說它應該在不同的分辨率/媒體上呈現,那麼你的佈局應該是響應,對吧?假設分辨率非常小,Group1/Group2/Group3會疊加在一起嗎? – retober
這有幫助嗎? http://stackoverflow.com/a/6615994/5561605 – sol
@retober我認爲他們不會在使用flexbox CSS時彼此堆疊?無論如何,決議不會那麼小。部署的系統將用於客戶的日常操作,並打算全屏使用。它將按照客戶指定的高清分辨率進行。 – thegreatjedi