複数のinline-block要素をCSSだけで左上詰めで逆順に並べたい!
折り返しが発生して行が多段になる可能性のある複数のinline-block要素をjavascriptを使わずcssだけで左上詰めで逆順に並べたいです。
試した方法は折り返された各行の要素数がすべて同じなら一見うまくいっているように見えますが最後の行の要素数が違うと希望通りの結果になりません。
↓もとの並び(ウィンドウサイズによって表示が異なります)
a b c d e f g h i j k
↓目標(ウィンドウサイズによって表示が異なります)
k j i h g f e d c b a
ベースとなるコード
inline-block要素の数は可変です
html
1<ul><li>a</li><li>b</li><li>c</li><li>d</li><li>e</li><li>f</li><li>g</li><li>h</li><li>i</li><li>j</li><li>k</li></ul>
css
1ul { 2 margin: 0; 3 padding: 0; 4 list-style: none; 5} 6li { 7 margin: 0; 8 padding: 0; 9 display: inline-block; 10 width: 200px; /* 任意のサイズ */ 11 height: 200px; /* 任意のサイズ */ 12} 13/* 色 */ 14ul { 15 background-color: silver; 16} 17li { 18 background-color: aqua; 19} 20li:nth-of-type(2n) { 21 background-color: lime; 22}
試したこと
1
追加するcss
css
1ul { 2 display: flex; 3 flex-direction: row-reverse; 4 flex-wrap: wrap-reverse; 5 justify-content: flex-end; 6}
↓こうなる(ウィンドウサイズによって表示が異なります)
k j i h g f e d c b a
2
追加するcss
css
1ul { 2 rotate: 180deg; 3} 4li { 5 rotate: 180deg; 6}
↓こうなる(ウィンドウサイズによって表示が異なります)
k j i h g f e d c b a
3
追加するcss
css
1ul { 2 writing-mode: vertical-rl; 3 direction: rtl; 4 text-align: left; 5} 6li { 7 writing-mode: horizontal-tb; 8 direction: ltr; 9}
↓こうなる(ウィンドウサイズによって表示が異なります)
k i f c j h e b g d a
2026/03/27 22:11