質問するログイン新規登録

Q&A

1回答

238閲覧

複数のinline-block要素をCSSだけで左上詰めで逆順に並べたい!

_._

総合スコア36

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2026/03/27 10:17

0

0

複数の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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答1

0

無理やりですが、一応できそうです。

CSS

1ul { 2 display: flex; 3 flex-wrap: wrap; 4} 5li:nth-last-child(1){order:1} 6li:nth-last-child(2){order:2} 7li:nth-last-child(3){order:3} 8li:nth-last-child(4){order:4} 9li:nth-last-child(5){order:5} 10li:nth-last-child(6){order:6} 11li:nth-last-child(7){order:7} 12li:nth-last-child(8){order:8} 13li:nth-last-child(9){order:9} 14li:nth-last-child(10){order:10} 15li:nth-last-child(11){order:11} 16li:nth-last-child(12){order:12} 17li:nth-last-child(13){order:13} 18li:nth-last-child(14){order:14} 19li:nth-last-child(15){order:15} 20li:nth-last-child(16){order:16} 21li:nth-last-child(17){order:17} 22li:nth-last-child(18){order:18} 23li:nth-last-child(19){order:19} 24li:nth-last-child(20){order:20} 25li:nth-last-child(21){order:21} 26li:nth-last-child(22){order:22} 27li:nth-last-child(23){order:23} 28li:nth-last-child(24){order:24} 29

https://jsfiddle.net/kdnwop83/

投稿2026/03/27 15:11

kei344

総合スコア69651

_._

2026/03/27 22:11

ありがとうございます。要素数の上限がわかっているばあいは使えそうです。 ```css ul { display: flex; flex-wrap: wrap; counter-reset: count; } li { counter-increment: count -1; order: counter(count); } ``` みたいなことができればどんな要素数にも対応できそうなのですが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問