justify-content
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
CSS ã® justify-content ããããã£ã¯ããã¬ãã¯ã¹ã³ã³ããã¼ã®ä¸»è»¸ãã°ãªããããã³æ®µçµã¿ã³ã³ããã¼ã®ã¤ã³ã©ã¤ã³è»¸ã«æ²¿ã£ã¦ãä¸èº«ã®ã¢ã¤ãã ã®éãå¨å²ã«ééãé
ç½®ããæ¹æ³ãå®ç¾©ãã¾ãã
ä¸è¨ã®ã¤ã³ã¿ã©ã¯ãã£ããªä¾ã§ã¯ãã°ãªããã¬ã¤ã¢ã¦ãã使ç¨ã㦠justify-content ã®å¤ã示ãã¦ãã¾ãã
試ãã¦ã¿ã¾ããã
justify-content: start;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
width: 220px;
display: grid;
grid-template-columns: 60px 60px;
grid-auto-rows: 40px;
row-gap: 10px;
}
#example-element > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
}
æ§æ
/* ä½ç½®ã«ããé
ç½® */
justify-content: center;
justify-content: start;
justify-content: end;
justify-content: flex-start;
justify-content: flex-end;
justify-content: left;
justify-content: right;
/* é常ã®é
ç½® */
justify-content: normal;
/* åé
é
ç½® */
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;
justify-content: stretch;
/* ããµããå ´åã®é
ç½®ï¼ä½ç½®æå®ã®é
ç½®ã®ã¿ï¼ */
justify-content: safe center;
justify-content: unsafe center;
/* ã°ãã¼ãã«å¤ */
justify-content: inherit;
justify-content: initial;
justify-content: revert;
justify-content: revert-layer;
justify-content: unset;
å¤
start-
åã¢ã¤ãã ã¯ã主軸æ¹åã§é ç½®ã³ã³ããã¼ã®å é å´ã®ç«¯ã«åãã¦äºãã«å¯ãã¦é ç½®ããã¾ãã
end-
åã¢ã¤ãã ã¯ã主軸æ¹åã§é ç½®ã³ã³ããã¼ã®æ«å°¾å´ã®ç«¯ã«åãã¦äºãã«å¯ãã¦é ç½®ããã¾ãã
flex-start-
åã¢ã¤ãã ã¯ããã¬ãã¯ã¹ã³ã³ããã¼ã®ä¸»è»¸ã®å é å´ã«ããé ç½®ã³ã³ããã¼ã®å é å´ã«åãã£ã¦äºãã«å¯ãã¦é ç½®ããã¾ãã ããã¯ãã¬ãã¯ã¹ã¬ã¤ã¢ã¦ãã®ã¢ã¤ãã ã®ã¿ã«é©ç¨ããã¾ãããã¬ãã¯ã¹ã³ã³ããã¼ã®åã§ã¯ãªãã¢ã¤ãã ã§ã¯ããã®å¤ã¯
startã®ããã«æ±ããã¾ãã flex-end-
åã¢ã¤ãã ã¯ããã¬ãã¯ã¹ã³ã³ããã¼ã®ä¸»è»¸ã®æ«å°¾å´ã«ããé ç½®ã³ã³ããã¼ã®æ«å°¾å´ã«åãã£ã¦äºãã«å¯ãã¦é ç½®ããã¾ãã ããã¯ãã¬ãã¯ã¹ã¬ã¤ã¢ã¦ãã®ã¢ã¤ãã ã®ã¿ã«é©ç¨ããã¾ãããã¬ãã¯ã¹ã³ã³ããã¼ã®åã§ã¯ãªãã¢ã¤ãã ã§ã¯ããã®å¤ã¯
endã®ããã«æ±ããã¾ãã center-
åã¢ã¤ãã ã¯ã主軸æ¹åã§é ç½®ã³ã³ããã¼ã®ä¸å¤®ã«åãã¦äºãã«å¯ãã¦é ç½®ããã¾ãã
left-
åã¢ã¤ãã ã¯ãé ç½®ã³ã³ããã¼ã®å·¦ç«¯ã«åãã£ã¦äºãã«å¯ãã¦é ç½®ããã¾ããããããã£ã®æ°´å¹³è»¸ãã¤ã³ã©ã¤ã³è»¸ã¨å¹³è¡ã§ãªãå ´åãä¾ãã°
flex-direction: column;ãè¨å®ããã¦ããå ´åããã®å¤ã¯startã®ããã«åä½ãã¾ãã right-
ã¢ã¤ãã ã¯ãé©åãªè»¸ã§é ç½®ã³ã³ããã¼ã®å³ç«¯ã«åãã£ã¦ãäºãã«åãé«ãã«è©°ãããã¾ãããã®ããããã£ã®è»¸ãï¼ã°ãªããã³ã³ããã¼ã®ï¼ã¤ã³ã©ã¤ã³è»¸ãï¼ãã¬ãã¯ã¹ããã¯ã¹ã³ã³ããã¼ã®ï¼ä¸»è»¸ã¨å¹³è¡ã§ãªãå ´åããã®å¤ã¯
startã®ããã«åä½ãã¾ãã normal-
stretchã¨ãã¦åä½ãã¾ãããã ããcolumn-widthãautoã§ãªã段çµã¿ã³ã³ããã¼ã®å ´åãæ®µã¯ã³ã³ããã¼ãã£ã±ãã«å¼ãå»¶ã°ãããã®ã§ã¯ãªããæå®ããcolumn-widthã®å¹ ãåãã¾ãããã¬ãã¯ã¹ã³ã³ããã¼ã§ã¯stretchã¯startã¨ãã¦åä½ããã®ã§ãnormalãstartã¨ãã¦åä½ãã¾ãã space-between-
åã¢ã¤ãã ã¯ãé ç½®ã³ã³ããã¼ã®ä¸ã§ä¸»è»¸æ¹åã«åçã«é ç½®ããã¾ãã飿¥ããã¢ã¤ãã å士ã®ééã¯åãã«ãªãã¾ããæåã®ã¢ã¤ãã ã¯ä¸»è»¸ã®å é å´ã«å¯ããããæå¾ã®ã¢ã¤ãã ã¯ä¸»è»¸ã®æ«å°¾å´ã«å¯ãããã¾ãã
space-around-
åã¢ã¤ãã ã¯ãé ç½®ã³ã³ããã¼ã®ä¸ã§ä¸»è»¸æ¹åã«åçã«é ç½®ããã¾ãã飿¥ããã¢ã¤ãã å士ã®ééã¯åãã«ãªãã¾ããæåã®ã¢ã¤ãã ã®åã¨æå¾ã®ã¢ã¤ãã ã®å¾ã®ä½ç½ã¯ã飿¥ããã¢ã¤ãã å士ã®ééã®ååã®å¹ ã«ãªãã¾ãã
space-evenly-
åã¢ã¤ãã ã¯ãé ç½®ã³ã³ããã¼ã®ä¸ã§ä¸»è»¸æ¹åã«åçã«é ç½®ããã¾ãã飿¥ããã¢ã¤ãã å士ã®ééãæåã®ã¢ã¤ãã ã®åã®ä½ç½ãæå¾ã®ã¢ã¤ãã ã®å¾ã®ä½ç½ã¯ãã¾ã£ããåãå¹ ã«ãªãã¾ãã
stretch-
åã¢ã¤ãã ã®ä¸»è»¸ã«æ²¿ã£ã寸æ³ã®åè¨ãé ç½®ã³ã³ããã¼ã®å¯¸æ³ãããå°ããå ´åã寸æ³ã
autoã®ã¢ã¤ãã ã¯ãmax-height/max-width(ã¾ãã¯åçã®æ©è½) ã§ã®å¶ç´ãå°éãã¤ã¤ã (æ¯ä¾çã«ã§ã¯ãªã) åçã«å¼ã伸ã°ããã主軸æ¹åã®å¯¸æ³ã®åè¨ãé ç½®ã³ã³ããã¼ãæºããããã«ãªãã¾ããã¡ã¢: ãã¬ãã¯ã¹ããã¯ã¹ã§ã¯ã
stretchã®å¤ã¯flex-startã¾ãã¯startã¨ãã¦åä½ãã¾ãããã®ããã伸縮ã¯flex-growããããã£ã使ç¨ãã¦å¶å¾¡ãã¾ãã safe-
ã¢ã¤ãã ãé ç½®ã³ã³ããã¼ãããµããå ´åããã®ã¢ã¤ãã ã¯é ç½®ã¢ã¼ãã
startã§ãããã®ããã«é ç½®ããã¾ããæå®ããé ç½®ã¯è¡ããã¾ããã unsafe-
ã¢ã¤ãã ãé ç½®ã³ã³ããã¼ãããµããå ´åã§ããæå®ããé ç½®ãå®è¡ããã¾ããããµã鲿¢ãåªå ãã¦ã叿ããé ç½®ãè¡ã
safeã¨ã¯ç°ãªãã¾ãã
解説
CSS ããã¯ã¹é
ç½®ã¢ã¸ã¥ã¼ã«ã§å®ç¾©ãã justify-content ã¯ã段çµã¿ã³ã³ããã¼ããã¬ãã¯ã¹ã³ã³ããã¼ãã°ãªããã³ã³ããã¼ã«é©ç¨ããã¾ãããã®ããããã£ã¯ãããã¯ã³ã³ããã¼ã«ã¯é©ç¨ãããã广ãããã¾ããã
ãã®ããããã£ã¯ align-content ããããã£ã¨å¤ãã®ãã¼ã¯ã¼ãå¤ãå
±æ ãã¦ãã¾ããããã¹ã¦ã§ã¯ããã¾ããã justify-content ã¯ãã¼ã¹ã©ã¤ã³ã®é
ç½®ã«ã¯é¢ä¸ããªãããããã¼ã¹ã©ã¤ã³ã®å¤ãåãã¾ããã
ãã¬ãã¯ã¹ã¬ã¤ã¢ã¦ãã§ã¯ããã®ããããã£ã¯ãä¸»è»¸ã«æ²¿ã£ãæ£ã®èªç±ç©ºéãããã¬ãã¯ã¹ã¢ã¤ãã ã®éãå¨å²ã«ãã©ã®ããã«é
åããããå®ç¾©ãã¾ãããã®ããããã£ã¯è¡å
ã®è¦ç´ éã®ç©ºéã«å½±é¿ããè¡éã®ç©ºéã«ã¯å½±é¿ãã¾ãããé
ç½®ã¯ãé·ã㨠auto ãã¼ã¸ã³ãé©ç¨ãããå¾ã«è¡ããã¾ããã¨ãããã¨ã¯ãè¡ã®ä¸ã® 1 ã¤ä»¥ä¸ã®ãã¬ãã¯ã¹ã¢ã¤ãã ã® flex-grow ä¿æ°ã 0 ãã大ããå ´åããã®è¡ã®æ¹åã«åé
ãã空éããªãã®ã§ããã®ããããã£ã¯ä½ã®å¹æãããã¾ãããã¾ããä¸»è»¸ã«æ²¿ã£ãå¼ã伸ã°ã㯠flex ã«ãã£ã¦å¶å¾¡ãããããã stretch å¤ã¯ flex-start ã¨åãããã«åä½ãã¾ãã
ã°ãªããã¬ã¤ã¢ã¦ãã®å ´åããã®ããããã£ã¯ã°ãªããã¢ã¤ãã ã§ã¯ãªããã°ãªããåã®éãå¨å²ã«å©ç¨ã§ãã空éãåé
ãã¾ããã°ãªããã³ã³ããã¼ãã°ãªãããã®ãã®ããã大ããå ´åã justify-content ããããã£ã使ç¨ãã¦ãã¤ã³ã©ã¤ã³è»¸ã«æ²¿ã£ã¦ã°ãªãããæããã°ãªããã®åãé
ç½®ãããã¨ãã§ãã¾ãã
ã°ãªããã®ãã©ãã¯ãµã¤ãºã auto ã§ããï¼ãã¤ãã©ãã¯ãµã¤ãºã auto ã®ã¿ã§ããï¼å ´åã¯ã align-content 㨠justify-content ããããã£ã«ãã£ã¦å¼ã伸ã°ããã¨ãã§ãã¾ãããããã£ã¦æ¢å®ã§ã¯ããã©ãã¯ãµã¤ãºã auto ã®ãã®ã¯æ®ãã®ç©ºéãå ãã¾ããã°ãªããã®ã¤ã³ã©ã¤ã³ãµã¤ãºãã°ãªããã³ã³ããã¼ã®ã¤ã³ã©ã¤ã³ãµã¤ãºããå°ãããªããã°ãé
ç½®ãã空éããªãããããã®ããããã£ã¯ãã®å ´åä½ã®å¹æãããã¾ããã
å ¬å¼å®ç¾©
| åæå¤ | normal |
|---|---|
| é©ç¨å¯¾è±¡ | ãã¬ãã¯ã¹ã³ã³ããã¼ |
| ç¶æ¿ | ãªã |
| è¨ç®å¤ | æå®éã |
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | 颿£å¤ |
形弿æ³
justify-content =
normal |
<content-distribution> |
<overflow-position>? [ <content-position> | left | right ]
<content-distribution> =
space-between |
space-around |
space-evenly |
stretch
<overflow-position> =
unsafe |
safe
<content-position> =
center |
start |
end |
flex-start |
flex-end
ä¾
>åºæ¬çãªã°ãªããã®ä¾
ãã®ä¾ã«ã¯ãã°ãªããã³ã³ããã¼ãããçãã°ãªãããããã¾ããããã¦ãå©ç¨ã§ãã空éãã°ãªããã®åã®å¨ããåã®éã«åçã«é
åããããã« justify-content ã使ç¨ãã¦ãã¾ãã
HTML
<section> ã³ã³ããã¼ã«ã¯ãã°ãªããã¢ã¤ãã ã¨ãªã <div> ã 16 åå
¥ã£ã¦ãã¾ãã
<section class="container">
<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>
<div>E</div>
<div>F</div>
<div>G</div>
<div>H</div>
<div>I</div>
<div>J</div>
<div>K</div>
<div>L</div>
<div>M</div>
<div>N</div>
<div>O</div>
<div>P</div>
</section>
CSS
ã³ã³ããã¼ã®å¹
ã 500px ã«è¨å®ããå¹
80px ã® 3 ã¤ã®åãæå®ãã¾ããã¤ã¾ããåã¨åã®éãå¨å²ã«å©ç¨ã§ãã空éã 260px ããã¨ãããã¨ã§ããããã¦ã justify-content: space-evenly ãè¨å®ãã¾ããããã¯ãååã®åå¾ã®ç©ºéã 65px ã«ãªããã¨ãæå³ãã¦ãã¾ãã
ãã¾ãã¾ãªå¹ ï¼ã¨èæ¯è²ï¼ãè¨å®ãã¦ãåã«ã©ã®ããã«é ç½®ããããã示ãã¦ãã¾ãã
.container {
display: grid;
grid: auto-flow / repeat(3, 80px);
width: 500px;
justify-content: space-evenly;
}
div {
background-color: pink;
width: 80px;
}
div:nth-of-type(n + 9) {
width: 35px;
background-color: lightgreen;
}
div:nth-last-of-type(3) {
width: 250px;
background-color: lightblue;
}
çµæ
justify-contents ã¯åãæ´åãããã¢ã¤ãã ãã°ãªããé åã®é
ç½®ã«ã¯å¹æãæããªããã¨ã«æ³¨æãã¦ãã ãããã°ãªããã¢ã¤ãã ã¯ãã°ãªããã»ã«ããªã¼ãã¼ããã¼ãã¦ããåã«å½±é¿ãä¸ãã¾ããã
safe ãã¼ã¯ã¼ã
ãã®ä¾ã§ã¯ safe ãã¼ã¯ã¼ãã示ãã¦ãã¾ãã 4 ã¤ã®ä¸å¤®æããã¬ãã¯ã¹ã¢ã¤ãã ãæå®ãã¾ããããããã¯æãè¿ããã¨ãã§ãããçµæã¨ãã¦åä¸ã®ãã¬ãã¯ã¹ã³ã³ããã¼ããããµãã¾ããjustify-content ããããã£ã® center ã« safe ã追å ãããã¨ã§ãããµããã³ã³ãã³ãã¯é
ç½®ã¢ã¼ãã start ã§ãããã®ããã«åä½ãã¾ãã
ã³ã³ããã¼ã center ã«è¨å®ããæåã®ã³ã³ããã¼ä»¥å¤ã®ã³ã³ããã¼ã«ã¯ safe ãã¼ã¯ã¼ãã追å ãã¦ãã¾ãã
.container {
align-items: baseline;
display: flex;
width: 350px;
height: 2em;
}
.safe {
justify-content: center;
}
.safe-center {
justify-content: safe center;
}
div {
flex: 0 0 100px;
}
çµæ
ã¢ã¤ãã ãé
ç½®ã³ã³ããã¼ããããµããã¨ã safe ãå«ã¾ãã¦ããå ´åãé
ç½®ã¢ã¼ã㯠start ã¨ãã¦åä½ãã center ã¯å®è£
ããã¾ãããã¢ã¤ãã ãã³ã³ããã¼ãããµããªãå ´åã safe ãã¼ã¯ã¼ãã¯å¹æãããã¾ããã
ãã¬ãã¯ã¹ã¢ã¤ãã ã®é åã®è¦è¦å
ãã®ä¾ã«ã¯è¤æ°è¡ã®æãè¿ããã¬ãã¯ã¹ã¬ã¤ã¢ã¦ããå«ã¾ãã¾ãã 2 ã¤ç®ã®ãã¬ãã¯ã¹ã¢ã¤ãã ã¯æ£ã®ãã¬ãã¯ã¹æé·ä¿æ°ãæã¡ãæåã®ãã¬ãã¯ã¹è¡ã®å©ç¨ã§ããèªç±ç©ºéããã¹ã¦æ¶è²»ãã¦ãã¾ãã
CSS
#container {
display: flex;
flex-flow: row wrap;
justify-content: space-between; /* ã©ã¤ããµã³ãã«ã§å¤æ´å¯è½ */
width: 510px;
}
div {
line-height: 2em;
flex: 0 0 120px;
background-color: pink;
}
div:nth-of-type(2) {
flex-grow: 1;
background-color: yellow;
}
div:nth-of-type(n + 9) {
flex: 0 0 35px;
background-color: lightgreen;
}
div:last-of-type {
flex: 0 0 300px;
background-color: lightblue;
}
çµæ
ãããããã¦ã³ã¡ãã¥ã¼ãããã¾ãã¾ãªãã¼ã¯ã¼ãã鏿ããã¨ããã¾ãã¾ãª justify-content ãã¼ã¯ã¼ãå¤ãè¦è¦åããã¾ããæåã®è¡ã«ã¯æé·å¯è½ãªã¢ã¤ãã ãããããããã®è¡ã«ã¯ justify-content ããããã£ãåé
ããããã«å©ç¨ã§ãã空éãããã¾ããã space-between å¤ã§ã¯ãããããã®è¡ã®æåã®ã¢ã¤ãã ã¯ä¸»è»¸ã®å
é å´ã«å¯ããããæå¾ã®ã¢ã¤ãã ã¯ä¸»è»¸ã®æ«å°¾å´ã«å¯ãããã¾ãããã®çµæããã¬ãã¯ã¹è¡ã«ã¢ã¤ãã ã 1 ã¤ãããªãå ´åããã®ã¢ã¤ãã ã¯ï¼æçµè¡ã«è¦ãããããã«ï¼ä¸»è»¸ã®å
é å´ã«é
ç½®ããã¾ãããã®ä»ã® space-* ã®å¤ãä¾ãã° space-evenly ã space-around ã§ã¯ãã®ãããªä»ã®ã®å¤ã§ã¯ããã®ãããªãã¨ã¯èµ·ããã¾ããã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Box Alignment Module Level 3 > # align-justify-content > |
| CSS Flexible Box Layout Module Level 1 > # justify-content-property > |