display: grid
を使用してレイアウトを作成しましたが、これまでのpadding-top
のトリックを使用して流体の四角形のdivを作成しましたが、これを行う方法があるかどうかは疑問ですCSS GridまたはFlexboxを使用します。レイアウトはそのままで、JSは使用しないでください。CSSグリッドレイアウトの流体スケーリングアイテム
https://codepen.io/anon/pen/GWzavX
.o-container {
margin: 0 auto;
max-width: 1280px;
}
.o-grid {
box-sizing: border-box;
display: grid;
grid-gap: 1rem;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(2, 1fr);
max-width: 100%;
padding: 0 1rem;
width: 100%;
}
.o-grid__content {
box-sizing: border-box;
height: 100%;
padding: 1rem;
position: absolute;
top: 0;
width: 100%;
}
.o-grid__item {
box-shadow: inset 0 0 0 1px red;
position: relative;
}
.o-grid__item--tall {
grid-row: span 2;
}
.o-grid__item--wide {
grid-column: span 2;
padding-top: 50%;
}
<div class="o-container">
<div class="o-grid">
<div class="o-grid__item o-grid__item--wide">
<div class="o-grid__content">
1. 2x1
</div>
</div>
<div class="o-grid__item">
<div class="o-grid__content">
2. 1x1
</div>
</div>
<div class="o-grid__item o-grid__item--tall">
<div class="o-grid__content">
3. 1x2
</div>
</div>
<div class="o-grid__item">
<div class="o-grid__content">
4. 1x1
</div>
</div>
<div class="o-grid__item">
<div class="o-grid__content">
5. 1x1
</div>
</div>
<div class="o-grid__item">
<div class="o-grid__content">
6. 1x1
</div>
</div>
</div>
</div>
問題ががあるコンテナの幅に達するまで、それだけで動作します。 – iamdarrenhall
あなたは何を意味するのか分かりません...? – Blazemonger
[最初のペン](https://codepen.io/anon/pen/GWzavX)と[あなたの提案があるこのフォーク](https://codepen.io/anon/pen/JWzNar)を比較してください。最初の問題は、divが四角形ではないことと、ビューポートの幅がコンテナの幅(1280ピクセル)を超えた後でもdivが引き続き高くなることです。 – iamdarrenhall