ãã¬ãã¯ã¹ã¢ã¤ãã ã®é åº
ãã¬ãã¯ã¹ããã¯ã¹ãã°ãªãããªã©ã®ã¬ã¤ã¢ã¦ãæ¹å¼ã«ã¯ãã³ã³ãã³ãã®é åºãå¶å¾¡ãããã¨ãã§ãã¾ãããã®è¨äºã§ã¯ããã¬ãã¯ã¹ããã¯ã¹ã使ã£ã¦ããå ´åã«ã³ã³ãã³ãã®è¦è¦çãªé åºã夿´ããæ¹æ³ã«ã¤ãã¦è¦ã¦ããã¾ããã¾ããã¢ã¤ãã ã®é åºã®å¤æ´ããã¢ã¯ã»ã·ããªãã£ã«ã©ãå½±é¿ãããã«ã¤ãã¦ãèå¯ãã¾ãã
ã¢ã¤ãã ãéé ã«è¡¨ç¤ºãã
flex-direction ããããã£ã¯ä»¥ä¸ã® 4 ã¤ã®å¤ã®ãã¡ä¸ã¤ãåããã¨ãã§ãã¾ãã
rowcolumnrow-reversecolumn-reverse
æåã® 2 ã¤ã®å¤ã¯ãææ¸ã®ã½ã¼ã¹ã®é çªã¨åãé çªã§é ç®ãä¿æããå é è¡ããé ã«è¡¨ç¤ºãã¾ãã


ä¸ 2 ã¤ã®å¤ã¯å é ã¨æ«å°¾ãå ¥ãæ¿ãã¦ãã¢ã¤ãã ãéé ã«è¡¨ç¤ºãã¾ãã


å
é ã¯æ¸åæ¹åã«å¿ãã¦å¤ããã¨ãããã¨ãæãåºãã¦ãã ãããå
ã»ã©ã®ä¾ã®ãã¡è¡ã«ã¤ãã¦ã®ãã®ã¯ãrow 㨠row-reverse ãè±èªã®ãããªå·¦æ¸ãã®è¨èªã«ããã¦ã©ã®ããã«ä½ç¨ãããã示ãã¦ãã¾ããã¢ã©ãã¢èªã®ãããªå³æ¸ãã®è¨èªã使ç¨ãã¦ããå ´åã«ã¯ãrow ã§ã¯å³ããå§ã¾ã row-reverse ã§ã¯å·¦ããå§ã¾ãã¾ãã

ããã¯ãã¢ã¤ãã ãéé ã§è¡¨ç¤ºããç°¡åãªæ¹æ³ã®ããã«æããããããã¾ãããããããã¢ã¤ãã ã¯è¦è¦çã«ã®ã¿éé ã§è¡¨ç¤ºããããã¨ã«çæãã¹ãã§ãããã¬ãã¯ã¹ã¬ã¤ã¢ã¦ãã®ä¸¦ã³æ¿ãæ©è½ã¯ãè¦è¦çãªã¬ã³ããªã³ã°ã®ã¿ã«å½±é¿ãã¾ããã¿ãé åºã¨èªã¿ä¸ãé åºã¯ã½ã¼ã¹ã³ã¼ãã®é åºã«å¾ãã¾ããã¤ã¾ããè¦è¦çãªè¡¨ç¤ºã®ã¿ã夿´ãããã½ã¼ã¹é åºã¯åãã¾ã¾ãªã®ã§ã CSS é対å¿ã® UA ï¼Siri ã Alexa ãèãã¦ãã ããï¼ãæ¯æ´æè¡ã®ã¦ã¼ã¶ã¼ã«ã¯ä½¿ãåæãç°ãªããã®ã«ãªãã¾ããããã²ã¼ã·ã§ã³ãã¼ã®é åºã夿´ãã¦ããã¿ãé ã¯ææ¸å ã®ã½ã¼ã¹é ã®ã¾ã¾å¤ããã¾ãããããã¯ãè¦è¦çãªé åºã§ã¯ãªããèªç¥çã«æ··ä¹±ãæãå¯è½æ§ãããã¾ãã
éé ã®å¤ãè¨å®ãã¦ããã¨ããããã®ã»ãã®æ¹æ³ã§ã¢ã¤ãã ã®é åºã夿´ãã¦ããå ´åãã½ã¼ã¹å ã®è«ççãªé åºã夿´ãã¹ããã©ãããèæ ®ããå¿ è¦ãããã¾ãã
ãã¬ãã¯ã¹ããã¯ã¹ã¬ã¤ã¢ã¦ãã®ä»æ§æ¸ã§ã¯ãã½ã¼ã¹ã®èª²é¡ãä¿®æ£ããæ¹æ³ã¨ãã¦ä¸¦ã¹æ¿ãã使ç¨ããªãããè¦åãã¦ãã¾ãã
ãææ¸ã®ã¢ã¯ã»ã·ããªãã£ãæãªãããã order ã
flex-flow/flex-directionã® *-reverse å¤ãã½ã¼ã¹é åºã®ä¿®æ£ã®ä»£ç¨ã¨ãã¦å©ç¨ãã¦ã¯ããã¾ãããã
次ã®ä¾ã§ã¯ã§ãªã³ã¯ãããªã³ã¯ã¸ã¨ã¿ããã¼ãæ¼ãã¦ããã¨ããã©ã¼ã«ã¹ã¹ã¿ã¤ã«ã強調表示ããã¾ããããã§ã flex-direction ã使ç¨ãã¦ãã¬ãã¯ã¹ã¢ã¤ãã ã®é åºã夿´ãã¦ããã¿ãé åºã¯å¤æ´ããããã½ã¼ã¹ã³ã¼ãã®é åºã«å¾ããã¨ã§ç¶ãããã¨ãåããã¾ãã
<div class="box">
<div><a href="#">One</a></div>
<div><a href="#">Two</a></div>
<div><a href="#">Three</a></div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
padding: 10px;
}
.box > * a:focus {
background-color: yellow;
color: black;
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
flex-direction: row-reverse;
}
flex-direction ã®å¤æ´ãã¿ãé ã夿´ããªãã®ã¨åæ§ã«ãæç»ã®é åºã«ã¤ãã¦ã夿´ããããã¨ã¯ããã¾ãããããã¾ã§ã¢ã¤ãã ã®è¡¨ç¤ºä¸ã®é åºãé転ããã ãã§ãã
order ããããã£
ãã¬ãã¯ã¹ã¢ã¤ãã ã表示ãããé åºãé転ãããã¨ãã§ãã¾ããããããã«å ã㦠order ããããã£ã使ç¨ãããã¨ã§ã¢ã¤ãã åå¥ã«è¡¨ç¤ºãããé åºã夿´ãããã¨ãã§ãã¾ãã
order ããããã£ã¯ãã¢ã¤ãã ãæ°åã§é åºã¥ããã°ã«ã¼ãã§ã¬ã¤ã¢ã¦ãããããè¨è¨ããã¦ãã¾ããã¤ã¾ãã¢ã¤ãã ã¯ã°ã«ã¼ãå
ã§ã®é åºãè¡¨ãæ´æ°ã«å²ãå½ã¦ããããã®æ°åãå°ããé ã«è¡¨ç¤ºãããã¨ãããã¨ã§ããåãæ°åãè¤æ°ã®ã¢ã¤ãã ã«å²ãå½ã¦ããã¦ããã¨ãã¯ãã½ã¼ã¹ä¸ã«ç¾ããé ã«è¡¨ç¤ºããã¾ãã
ä¾ã¨ãã¦ã5 ã¤ã®ã¢ã¤ãã ã«å¯¾ãã¦ä»¥ä¸ã®ããã« order ãå²ãå½ã¦ã¾ãã
- ã½ã¼ã¹ä¸ã§ 1 çªç®ã®ã¢ã¤ãã :
order: 2 - ã½ã¼ã¹ä¸ã§ 2 çªç®ã®ã¢ã¤ãã :
order: 3 - ã½ã¼ã¹ä¸ã§ 3 çªç®ã®ã¢ã¤ãã :
order: 1 - ã½ã¼ã¹ä¸ã§ 4 çªç®ã®ã¢ã¤ãã :
order: 3 - ã½ã¼ã¹ä¸ã§ 5 çªç®ã®ã¢ã¤ãã :
order: 1
ãã®ã¨ãã¢ã¤ãã ã¯ä»¥ä¸ã®é åºã§ãã¼ã¸ä¸ã«è¡¨ç¤ºããã¾ãã
- ã½ã¼ã¹ä¸ã§ 3 çªç®ã®ã¢ã¤ãã :
order: 1 - ã½ã¼ã¹ä¸ã§ 5 çªç®ã®ã¢ã¤ãã :
order: 1 - ã½ã¼ã¹ä¸ã§ 1 çªç®ã®ã¢ã¤ãã :
order: 2 - ã½ã¼ã¹ä¸ã§ 2 çªç®ã®ã¢ã¤ãã :
order: 3 - ã½ã¼ã¹ä¸ã§ 4 çªç®ã®ã¢ã¤ãã :
order: 3

以ä¸ã®ä¾ã§å¤ã夿´ãã¦ã表示é ãã©ã®ããã«å¤ããã試ãã¦ã¿ã¦ãã ãããã¾ã flex-direction ã row-reverse ã«å¤ããã¨ãã«ä½ãèµ·ããããã¤ã¾ãå
é ãå¤ããããã«å対å´ãã並ã¹ããããã¨ã確ããã¾ãããã
<div class="box">
<div><a href="#">1</a></div>
<div><a href="#">2</a></div>
<div><a href="#">3</a></div>
<div><a href="#">4</a></div>
<div><a href="#">5</a></div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
padding: 10px;
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
flex-direction: row;
}
.box :nth-child(1) {
order: 2;
}
.box :nth-child(2) {
order: 3;
}
.box :nth-child(3) {
order: 1;
}
.box :nth-child(4) {
order: 3;
}
.box :nth-child(5) {
order: 1;
}
ãã¬ãã¯ã¹ã¢ã¤ãã ã®æ¢å®ã® order 㯠0 ã§ãããããã£ã¦ 0 ãã大ãã order ããã¤ã¢ã¤ãã ã¯ãæç¤ºçã« order ãæå®ããã¦ããªãã¢ã¤ãã ã®å¾ãã«è¡¨ç¤ºããã¾ãã
order ã«ã¯è² ã®å¤ãæå®ãããã¨ãã§ããã»ãã®ã¢ã¤ãã ã¯ãã®ã¾ã¾ã®é åºãä¿ã¡ãªããä¸ã¤ã®ã¢ã¤ãã ã ããå
é ã«è¡¨ç¤ºãããå ´åã«ãªã©ã«æç¨ã§ããå
é ã«è¡¨ç¤ºãããã¢ã¤ãã ã®é åºã -1 ãè¨å®ãããã¨ã§ã 0 ããå°ãã order ã®ãã®ã¢ã¤ãã ã常ã«å
é ã«è¡¨ç¤ºãããããã«ãªãã¾ãã
以ä¸ã®ä¾ã§ã¯ ãã¬ãã¯ã¹ããã¯ã¹ã使ã£ã¦ã¬ã¤ã¢ã¦ãããã¦ãã¾ããHTML ã®ä¸ã§æå®ããã¦ãã active ã¯ã©ã¹ãå¥ã®ã¢ã¤ãã ã«ä»ãæ¿ãããã¨ã§ãã¬ã¤ã¢ã¦ãã®å
é ã«å¹
ãã¹ã¦ã使ã£ã¦è¡¨ç¤ºãããã¢ã¤ãã ã夿´ãããã¨ãã§ããæ®ãã®ã¢ã¤ãã ã¯æ¬¡ã®è¡ã«è¡¨ç¤ºãããããã«ãªãã¾ãã
<div class="box">
<div><a href="#">1</a></div>
<div><a href="#">2</a></div>
<div class="active"><a href="#">3</a></div>
<div><a href="#">4</a></div>
<div><a href="#">5</a></div>
</div>
* {
box-sizing: border-box;
}
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
padding: 10px;
}
.box {
width: 500px;
border: 2px dotted rgb(96 139 168);
display: flex;
flex-wrap: wrap;
flex-direction: row;
}
.active {
order: -1;
flex: 1 0 100%;
}
ã¢ã¤ãã ã¯ä»æ§æ¸ã®ä¸ã§ order-modified document order ã¨ãã¦è¿°ã¹ããã¦ãããã®ã«å¾ã£ã¦è¡¨ç¤ºããã¾ããã¢ã¤ãã ã表示ãããåã«ãorder ããããã£ã®å¤ãèæ
®ããã¾ãã
order ã¯ã¢ã¤ãã ã®æç»é ã夿´ãã¾ãã order ã®å¤ãä½ãã¢ã¤ãã ãæåã«æç»ããã order ã®å¤ãé«ãã¢ã¤ãã ããã®å¾ã«æç»ããã¾ãã
order ããããã£ã¨ã¢ã¯ã»ã·ããªãã£
order ããããã£ã使ç¨ããã¨ã®ã¢ã¯ã»ã·ããªãã£ã®å½±é¿ã¯ã flex-direction ã§æ¹åã夿´ãããã¨ã¨åãå½±é¿ãããã¾ãã order ã使ç¨ããã¨ãã¢ã¤ãã ãæç»ãããé çªã¨ãè¦è¦çã«è¡¨ç¤ºãããé çªã夿´ããã¾ããã¢ã¤ãã ã®é 次ããã²ã¼ã·ã§ã³é ã¯å¤æ´ããã¾ããããã®ãããã¦ã¼ã¶ã¼ããã¼ã¸ä¸ã®ã³ã³ãã³ãããã¼ãã¼ãã§ã¿ããã¼ã§ç§»åãã¦ããå ´åãã³ã³ãã³ãå
ãã¨ã¦ãæ··ä¹±ããæ¹æ³ã§ã¸ã£ã³ããã¦ãã¾ãå¯è½æ§ãããã¾ãã
ãã®è¨äºä¸ã®ä¾ã§ã¿ãç§»åã試ãã¨ã order ããã¦ã¹ã®ãããªãã¤ã³ãã£ã³ã°ããã¤ã¹ã使ããªãã¦ã¼ã¶ã¼ã«ããããªä½é¨ãããã¦ãã¾ãå¯è½æ§ããããã¨ããããã§ãããã表示ä¸ã®é åºã¨è«ççãªé åºã®åæã¨ããã«ãã£ã¦èµ·ããããã¢ã¯ã»ã·ããªãã£ã®åé¡ã«ã¤ãã¦ããã«çè§£ããããã«ã¯ã以ä¸ã®ãã¼ã¸ãåç
§ãã¦ãã ããã
- Flexbox and the keyboard navigation disconnect (tink.uk, 2016)
- HTML Source Order vs CSS Display Order (adrianroselli.com, 2015)
- The Responsive Order Conflict for Keyboard Focus (alastairc.uk, 2017)
order ã®ç¨é
ä¸é¨ã®ç¨éã§ã¯ãè«ççãªãã¬ãã¯ã¹ã¢ã¤ãã ã®é åºï¼ãããã£ã¦èªã¿åãé ï¼ã¨è¦è¦çãªé åºãç°ãªããã¨ãæçãªå ´åãããã¾ããæ°ãã¤ãã¦ä½¿ãã° order ããããã£ã¯ãããã¤ãã®ãããããã¿ã¼ã³ãç°¡åã«å®è£
ããããã«å½¹ã«ç«ã¡ã¾ãã
ä¾ãã°ãã¥ã¼ã¹è¨äºã表示ããã«ã¼ãã®ãã¶ã¤ã³ããã£ãã¨ãã¾ãããã¥ã¼ã¹ã®è¦åºãã¯ãã¤ã©ã¤ããããéè¦ãªãã®ã§ãã¾ãã¦ã¼ã¶ã¼ãèªã¿ãããã®ãæ¢ãããã«ã¿ãã§ã»ãã®è¦åºãããã¸ã£ã³ããã対象ã¨ãªãè¦ç´ ã§ãããã¾ããã«ã¼ãã«ã¯æ¥ä»ããããä½ããããã¶ã¤ã³ã¯ä»¥ä¸ã®ãããªãã®ã§ããã¨ãã¾ãã

表示ä¸ã§ã¯æ¥ä»ãè¦åºãã®ä¸ã«ç¾ãã¦ãã¾ãããããã¹ã¯ãªã¼ã³ãªã¼ãã¼ã«ãã£ã¦èªã¿ä¸ããããã¨ãã«ã¯ãã¿ã¤ãã«ãå
ã«èªã¾ãã¦æ¥ä»ã¯ãã®å¾ãæã¾ããã¨æã£ã¦ããã¨ãã¾ãããããã£ããã¨ã order ããããã£ã§å®ç¾ãããã¨ãã§ãã¾ãã
ã«ã¼ãããã¬ãã¯ã¹ã³ã³ããã¼ã¨ãã¦ã flex-direction ã column ã«è¨å®ãã¾ããããã¦ãæ¥ä»ã¯ order ã -1 ã«è¨å®ãããã¨ã§ãè¦åºãã®ä¸ã«é
ç½®ãã¾ãã
<div class="wrapper">
<div class="card">
<h3>ãã¥ã¼ã¹ã¢ã¤ãã ã®ã¿ã¤ãã«</h3>
<div class="date">2017 å¹´ 11 æ 1 æ¥</div>
<p>ãã¥ã¼ã¹ã¢ã¤ãã ã®ã³ã³ãã³ãã§ããã¨ã¦ã価å¤ã®ãããã¥ã¼ã¹ã§ãã</p>
</div>
<div class="card">
<h3>ããä¸ã¤ã®ã¿ã¤ãã«</h3>
<div class="date">2017 å¹´ 11 æ 6 æ¥</div>
<p>ãã¥ã¼ã¹ã¢ã¤ãã ã®ã³ã³ãã³ãã§ããã¨ã¦ã価å¤ã®ãããã¥ã¼ã¹ã§ãã</p>
</div>
</div>
body {
font-family: sans-serif;
}
.wrapper {
display: flex;
flex: 1 1 200px;
gap: 1em;
}
.card {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
padding: 1em;
display: flex;
flex-direction: column;
}
.date {
order: -1;
text-align: right;
}
ãã®ä¾ã®ãããªç´°ããªèª¿æ´ã¯ order ããããã£ã使ãã®ã«ãµããããç¶æ³ã§ããææ¸å
ã®èªã¿ä¸ãé ãã¿ãé ã¨åãè«çé ãç¶æããæãã¢ã¯ã»ã·ããªãã£ãé«ãæ§é åãããæ¹æ³ã§ç¶æãã¾ãããããã㦠order ããããã£ã¯ç´ç²ã«è¦è¦çãªãã¶ã¤ã³ã®èª¿æ´ã®ããã«ä½¿ãã¾ãããããã®éã«ã¯ã¦ã¼ã¶ã¼ããã¼ãã¼ãã§ã¿ãç§»åããã対象ã¨ãªãã¢ã¤ãã ã®é åºå¤æ´ããã¦ããªããçæãã¦ãã ãããç¹ã«æ¯è¼çæ°ããã¬ã¤ã¢ã¦ãã使ãã¨ãã«ã¯ããã¦ã¹ãã¿ããç»é¢ã§ã¯ãªãããã¼ãã¼ãã®ã¿ã«ãããµã¤ãæä½ã®ç¢ºèªã確å®ã«ãã¹ãã«å«ããæ¹ãããã§ãããããã®ãã¹ãã§ãéçºæã®é¸æãã³ã³ãã³ãã®ç§»åãé£ãããã¦ãã¾ã£ã¦ãããã©ãããããã«ãããããã«ãªãã§ãããã
é¢é£æ å ±
- ãã¬ãã¯ã¹ããã¯ã¹ã®æ¦è¦
- ãã¬ãã¯ã¹ããã¯ã¹ã¨ä»ã®ã¬ã¤ã¢ã¦ãæ¹æ³ã®é¢ä¿
- ãã¬ãã¯ã¹ã³ã³ããã¼å ã®ã¢ã¤ãã ã®é ç½®
- 主軸æ¹åã®ãã¬ãã¯ã¹ã¢ã¤ãã ã®æ¯çã®å¶å¾¡
- ãã¬ãã¯ã¹ã¢ã¤ãã ã®æãè¿ãããã¹ã¿ã¼ãã
- ãã¬ãã¯ã¹ããã¯ã¹ã®å ¸åçãªç¨é
- CSS ãã¬ãã¯ã¹ããã¯ã¹ã¬ã¤ã¢ã¦ãã¢ã¸ã¥ã¼ã«