逆N字のリスト
説明
広い画面では次のように逆N字に並べる
- 1,3,5はテキスト
- 2,4,6は画像
1 4 5 ...
2 3 6 ...
狭い画面では縦に積む
1
2
3
4
5
6
Flexboxのorderではできない見た目になっている。
4n-1番目のli要素だけ位置をずらす
4n-1番目のli要素だけgrid-row: 2;
を指定して、位置をずらす。
li:nth-child(4n-1) {
grid-row: 2;
}
CSSをいじらずとも、li要素を追加すれば右側に増やしていくことができます。
HTML
<ul>
<li>
1.The quick brown fox jumps over the lazy dog.
</li>
<li>
<img src="http://lorempixel.com/output/animals-q-g-200-200-2.jpg" alt="">
</li>
<li>
3.The quick brown fox jumps over the lazy dog.
</li>
<li>
<img src="http://lorempixel.com/output/animals-q-g-200-200-3.jpg" alt="">
</li>
<li>
5.The quick brown fox jumps over the lazy dog.
</li>
<li>
<img src="http://lorempixel.com/output/animals-q-g-200-200-6.jpg" alt="">
</li>
</ul>
CSS
ul {
display: grid;
grid-template-columns: repeat(auto-fill, 1fr);
grid-template-rows: repeat(2, 1fr);
grid-auto-flow: column dense;
padding: 0;
gap: 10px;
list-style: none;
}
li { padding: 10px; }
li:nth-child(4n-1) {
grid-row: 2;
}
img {
width: 100%;
display: block;
}
@media screen and (max-width: 300px) {
ul {
grid-template-columns: 1fr;
grid-template-rows: auto;
grid-auto-flow: row;
}
li:nth-child(4n-1) {
grid-row: auto;
}
}
/* 装飾 */
ul {
max-width: 800px;
margin: 0 auto;
}
li:nth-child(even) { border: 1px solid blue; }
li:nth-child(odd) { border: 1px solid green; }
li:nth-child(4n-1) { border: 1px solid red; }