ã€ãŸããããã§ã¯ãFlexboxã¬ã€ã¢ãŠãã䜿çšããŠWebãµã€ãçšã®é«å質ã®ããããŒãäœæããæ¹æ³ã瀺ããŸããããã€ãã®ãã³ããå ±æããæåŸã«ããã®è³æã®ããã«ç¹å¥ã«äœæãããç§ã®ãããžã§ã¯ãããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸãããããã£ãŠãããã§åãäžããããšã«ãããããã¯ã«æ¬åœã«èå³ãããå Žåã¯ããã®èšäºãæåŸãŸã§èªãã§ãã ããã
ããã§ã¯ãFlexboxã¬ã€ã¢ãŠãã®åºæ¬ãç¥ã£ãŠããããšãåæãšããŠããŸããããã«ã念ã®ãããCSSããããã£ã«ã€ããŠè©³ããç¥ããã人ã®ããã«æžãããç§ã®èšäºããããŸã
flexã
åæžã
ãŸããããªããšç§ãããµã€ãããããŒããŸãã¯ããµã€ãããããŒããåããã®ãšåŒãã§ããããšã確èªããŸãããããµã€ãããããŒã¯ããŠãŒã¶ãŒããµã€ãã«ã¢ã¯ã»ã¹ãããšãã«æåã«è¡šç€ºãããããŒãžèŠçŽ ã®1ã€ã§ããéåžžããµã€ãã®ããŽãŸãã¯ååãããã³ããã²ãŒã·ã§ã³ãªã³ã¯ãå«ãŸããŠããŸããæ¬¡ã®å³ãèŠãŠãã ããã

ãµã€ãã®ããŽãããã²ãŒã·ã§ã³ãªã³ã¯ãããããŒããŒãã®ã³ã³ãã
ãµã€ãã®ããããŒããŒãã®ãã¶ã€ã³ã«é¢ä¿ãªãããã®éèŠãªèŠçŽ ã¯ããŽãšãªã³ã¯ã®ãªã¹ãã§ãã
Flexboxãã¯ãããžãŒã®å®é
Flexboxãã¯ãããžãŒã䜿çšããŠãµã€ãã®ããããŒã®ã¬ã€ã¢ãŠããäœæãããšãåãã¬ãã«ã®ãã¹ãŠã®ã¢ã€ãã ã1è¡ã«äžŠã¹ãããŸããæ¬¡ã«æ®ã£ãŠããã®ã¯ãããããã£ã䜿çšã
justify-contentãŠèŠçŽ éã«ç©ºãé åã忣ããããšã«ãããèŠçŽ ãæŽåãããããšã§ãã
ããŒã¯ã¢ããã³ãŒãã¯æ¬¡ã®ãšããã§ãã
<header class="site-header">
<a href="#" class="brand">Brand</a>
<nav class="nav"></nav>
</header>
ã¹ã¿ã€ã«ã¯æ¬¡ã®ãšããã§ãã
.site-header {
display: flex;
justify-content: space-between;
align-items: center;
}
ãŸã£ããè€éã§ã¯ãããŸããããïŒãŸãããã®ãããªåçŽãªèŠåºãã®å Žåã¯ããã§ãããããå®éã«ã¯ãç©äºã¯ã¯ããã«è€éã«ãªãå¯èœæ§ããããŸãã
ããŒãžããããŒã³ã³ãã
åã®ã»ã¯ã·ã§ã³ã§èª¬æããããŒãžããããŒããŒã¯ã¢ããã«ã¯ãããŽãšããã²ãŒã·ã§ã³ãªã³ã¯ã衚ãèŠçŽ ãå«ãå éšã³ã³ããèŠçŽ ãå«ãŸããŠããŸããã倧ç»é¢ã§ã¯ããã®ã¬ã€ã¢ãŠãã䜿çšãããšåé¡ãçºçããå¯èœæ§ããããŸãã

å éšã³ã³ããïŒäžïŒãšã³ã³ããïŒäžïŒã䜿çšããã«äœæãããããŒãžããããŒã¬ã€ã¢ãŠã
æåã®ããŒãžããããŒã¯ãäœææã«å éšã³ã³ããã䜿çšãããŠããªãã£ããããå¹ ãåºãããããšã«æ³šæããŠãã ããããããã2çªç®ã®ã¬ã€ã¢ãŠãã¯ã¯ããã«è¯ãèŠããŸãããããã£ãŠãåã®äŸã®HTMLã³ãŒãã¯æ¬¡ã®ããã«æžãçŽãå¿ èŠããããŸãã
<header class="site-header">
<div class="wrapper site-header__wrapper">
<a href="#" class="brand"><img src="logo.svg" alt="brand" /></a>
<nav class="nav"></nav>
</div>
</header>
ãããŠããã¬ãã¯ã¹ã¹ã¿ã€ã«ãèŠçŽ ã«é©çšããå¿ èŠããããŸã
.site-header__wrapperïŒ
.site-header__wrapper {
display: flex;
justify-content: space-between;
align-items: center;
}
ãã¬ãã¯ã¹ã©ããããããã£ã®äœ¿çš
ããããã£
flex-wrapã¯äžçš®ã®CSSã»ãã¥ãªãã£ã¡ã«ããºã ã§ããç»é¢ãµã€ãºãå°ããå ŽåãããŒãžã®ããããŒéšåãæäœããããã«æ°Žå¹³ã¹ã¯ããŒã«ã䜿çšããªããã°ãªããªãå¯èœæ§ããããŸããããã¯ãããã©ã®ããã«èŠãããã§ãã

ããŒãžã¿ã€ãã«ãæäœããã«ã¯ãæ°Žå¹³ã¹ã¯ããŒã«ã䜿çšããå¿ èŠããããŸããããã§ã¯flex-wrapããããã£ã¯äœ¿çšãããŠããŸãããwrap
ã芧ã®ãšããããã®ãããªããŒãžãæäœããã®ã¯äžäŸ¿ã§ããã ãããããããã£ãå¿ããªãã§ãã ãã
flex-wrapïŒ
ããŒãžããããŒã»ã¯ã·ã§ã³ã®ããŸããŸãªã¬ã€ã¢ãŠããªãã·ã§ã³ã®èª¿æ»
Flexboxã¬ã€ã¢ãŠãã§ç§ãæ°ã«å ¥ã£ãŠããã®ã¯ãããŒãžã®ããããŒã»ã¯ã·ã§ã³ã®ããŸããŸãªãã¶ã€ã³ãç°¡åã«ãµããŒãã§ããããšã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãäžèšã®äŸã«åºã¥ããŠããã¿ã³ãæ€çŽ¢ãã£ãŒã«ããªã©ã®æ°ããèŠçŽ ãã¬ã€ã¢ãŠãã«è¿œå ããããšã«ãããã¬ã€ã¢ãŠããæ¡åŒµããå¯èœæ§ãæ¢ããŸããããã«ãããŒãžã®ããããŒã®åã®è¡šç€ºé åºã倿Žããæ¹æ³ã調ã¹ãããšæããŸãã
âããªã¢ã³ãçªå·1

ããŒãžã®ããããŒéšåã®æåã®ããŒãžã§ã³
ãã®ã¬ã€ã¢ãŠãã«ãã¿ã³ã远å ãããããã²ãŒã·ã§ã³ãªã³ã¯ã®ãããã¯ã®åŸã«é 眮ãããŸãããã©ããã£ãŠããã®ïŒèŠçŽ å ã«é 眮ããããªã³ã¯ãšããŠèšèšããå¿ èŠããã
<nav>ãŸããïŒãããšããå¥ã®èŠçŽ ã«ããå¿
èŠããããŸããïŒç§ã¯ãããããŸãã
ãããç§ã®ã¢ã€ãã¢ã®HTMLã§ãïŒ
<header class="site-header">
<div class="wrapper site-header__wrapper">
<a href="#" class="brand"><img src="logo.svg" alt="brand" /></a>
<nav class="nav"></nav>
<a href="/track-shipment" class="button">Track</a>
</div>
</header>
ãã®å Žåãããããã£ã䜿çšããŠèŠçŽ éã®è·é¢ãèšå®ããããšã¯ã§ããŸãã
justify-content: space-betweenã代ããã«ãããããã£ã䜿çšããŠãªã³ã¯ã®ãããã¯ãæŽåããŸãmargin-left: autoãããã«ããããªã³ã¯ãšãã¿ã³ãã³ã³ããã®å³åŽã«ããã·ã¥ãããŸãã

margin-leftïŒautoã®ãããã§ãèŠçŽ ã¯ã³ã³ããã®å³åŽã«æŒãã
ãŸãããã¿ã³ããªã³ã¯ãããã¯ããåé¢ããããšã¯ãããšãã°ããã¿ã³ãé¢ããŠãªã³ã¯ãããã¯ãããããããŠã³ã¡ãã¥ãŒãšããŠè¡šç€ºããå¿ èŠãããã¢ãã€ã«ã¬ã€ã¢ãŠãã«åœ¹ç«ã¡ãŸãã

ãã¹ã¯ããããšã¢ãã€ã«ã®ããŒãžããããŒ
âãªãã·ã§ã³çªå·2

ããŒãžã®èŠåºãéšåã®2çªç®ã®ããŒãžã§ã³
ããã§ã¯ãæ€çŽ¢ãã£ãŒã«ãã远å ããããšã«ãããããŒãžã®èŠåºãéšåã®æ©èœãæ¡åŒµããŸãããããŒãžã«ä»ã®èŠçŽ ãé 眮ããåŸã«æ®ã£ã空ãé åãå æããŸããFlexboxã¬ã€ã¢ãŠãã§ã¯ãããã¯ããããã£ãé©çšããããšã§å®çŸã§ããŸã
flexã
ããŒã¯ã¢ããã¯æ¬¡ã®ãšããã§ãã
<header class="site-header">
<div class="wrapper site-header__wrapper">
<a href="#" class="brand"><img src="logo.svg" alt="brand" /></a>
<div class="search"></div>
<nav class="nav"></nav>
<a href="/track-shipment" class="button">Track</a>
</div>
</header>
æ€çŽ¢ããã¯ã¹ã«é©çšãããã¹ã¿ã€ã«ã¯æ¬¡ã®ãšããã§ãã
.search {
flex: 1;
}
ããã§å šéšã§ãïŒããã§ããã£ãŒã«ãã¯ããŽãšãªã³ã¯ãããã¯ã®éã®ç©ºã®ã¹ããŒã¹ãåããŸãããã ãããã®ã¢ãããŒãã«ã¯ããã€ãã®å¶éããããŸããå°ããªç»é¢ã§ã¯ãããŒãžã®ããããŒã¯æ¬¡ã®ããã«ãªããŸãã

å°ããªç»é¢
ã®ããŒãžããããŒæ€çŽ¢ãã£ãŒã«ãã®å¹ ã¯ãç¹å®ã®ãµã€ãºä»¥äžã§ããå¿ èŠããããŸããããããªããšãããã¹ããå ¥åããã®ãé£ãããªããŸãã以äžã¯ããã®åé¡ã«å¯Ÿããããã€ãã®è§£æ±ºçã§ãã

å°ããªç»é¢ã§æ€çŽ¢ãã£ãŒã«ãã®å¹ ãçãããããšã«ãã£ãŠåŒãèµ·ããããåé¡ã解決ãã
2çªç®ã®ãªãã·ã§ã³ã䜿çšãããšããªã³ã¯ã®ãããã¯ãæ©ãé ãããªãããã2çªç®ã®ãªãã·ã§ã³ã®æ¹ã奜ãã§ããäžè¬çã«ãã¬ã€ã¢ãŠãã®æ£ããè¡šç€ºã«æ¯éããªãå Žåã¯ãèŠçŽ ãé衚瀺ã«ããªãããã«åªããŠãããšèšããŸãã
âãªãã·ã§ã³çªå·3

èŠåºãéšåã®3çªç®ã®ããŒãžã§ã³
ããã¯ãèŠåºãã®æåã®ããŒãžã§ã³ãšåãããŒã¯ã¢ããã§ãããã ããããã§ã¯ãç»é¢ã«èŠçŽ ã衚瀺ããé åºã倿ŽãããŠããŸããã©ããã£ãŠããã®ïŒããã§ããããã£ã䜿çšããããšã決å®ã§ããŸã
orderããã®ã¢ã€ãã¢ã調ã¹ãŠã¿ãŸãããã
HTMLã¯æ¬¡ã®ãšããã§ãã
<header class="site-header">
<div class="wrapper site-header__wrapper">
<a href="#" class="brand"><img src="logo.svg" alt="brand" /></a>
<nav class="nav"></nav>
<a href="/track-shipment" class="button">Track</a>
</div>
</header>
ã¹ã¿ã€ã«ã¯æ¬¡ã®ãšããã§ãã
.site-header {
display: flex;
justify-content: space-between;
}
.nav {
order: -1;
}
ãããŠãããã¯ããããã¹ãŠãã¬ã³ããªã³ã°ããçµæãã©ã®ããã«èŠãããã§ãã

justify-contentïŒspace-betweenããããã£ã䜿çšããŠããããŽã¯äžå€®ã«æããããŸããããã®ããããã£ã¯ãèŠçŽ éã«ç©ºãé åãåé ããã ãã§ãã
ãã®åé¡ã®è§£æ±ºçã¯ãååèŠçŽ ãããããã£ã䜿çšããŠããŒãžã®ããããŒã«å²ãåœãŠãããš
flex: 1ã§ããããã«ãããèŠçŽ éã«ã¹ããŒã¹ã忣ãããŸãã
ã¹ã¿ã€ã«ã¯æ¬¡ã®ãšããã§ãã
.brand,
.nav,
.button {
flex: 1;
}

ããŒãžã®èŠåºãéšåã®èŠçŽ éã®ç©ºãé åã®åäžãªååž
ãããããã¿ã³ã§äœãå¥åŠãªããšãèµ·ãããŸãããããããã£ã®é©çšã«ããã
flex: 1é·ãããŸãããããä¿®æ£ããå¯äžã®æ¹æ³ã¯ããã¿ã³ãã³ã³ããèŠçŽ ã«é
眮ããããšã§ãã
<header class="site-header">
<div class="wrapper site-header__wrapper">
<a href="#" class="brand"><img src="logo.svg" alt="brand" /></a>
<nav class="nav"></nav>
<div class="button-wrapper">
<a href="/track-shipment" class="button">Track</a>
</div>
</div>
</header>
ãã®ã¢ãããŒãã§ã¯ãããŽãšãã¿ã³ã®äž¡æ¹ãäžå€®æãã«ããããšãã§ããŸãã
.logo {
text-align: center;
}
/* . - , , . */
.button-wrapper {
text-align: end; /* end - , LTR-, , right */
}

èŠçŽ ã®äœçœ®åãããã ã
ããã®ã¢ãããŒããçæ³çã§ã¯ãããŸãããããã²ãŒã·ã§ã³ãããã¯ã«ããã«ãªã³ã¯ããããšãåé¡ãçºçããããšã«æ³šæããŠãã ãããã€ãŸããããã§ã¯ããã²ãŒã·ã§ã³ãããã¯ã®å¹ ãäžå®ã®ãµã€ãºãè¶ ããªãããã«ããå¿ èŠããããŸããããã¯ãããŽã®äžå€®æãã倱ãããäŸã§ãã

ããŽãäžå€®ã«é 眮ãããªããªããŸããã
ã芧ã®ãšãããåã®ç»åã§ã¯ãããŽãäžå€®ã«é 眮ãããŠããŸãããäºæããªãåé¡ã«çŽé¢ããªãããã«ãäžèšã®ã¢ãããŒãã®ãã®æ©èœã«ã€ããŠèŠããŠãã䟡å€ããããŸãã
Webãµã€ãã®ããããŒã¬ã€ã¢ãŠãã®ããŸããŸãªãã¶ã€ã³ãªãã·ã§ã³ãæ€èšãããã®ãããªã¬ã€ã¢ãŠããäœæããæ¹æ³ã«ã€ããŠèª¬æããã®ã§ãããŒãžããããŒã¬ã€ã¢ãŠãã®äœæã«åœ¹ç«ã€ããã€ãã®éèŠãªã¢ã€ãã¢ãèŠãŠã¿ãŸãããã
FlexboxããŒã¹ã®ããŒãžã®ããããŒãèšèšããããã®ãã³ã
âãã¬ãã¯ã¹ããŒã¹ã®ããããã£
flex-basis: 100%ã¢ãã€ã«ããã€ã¹ã§èŠçŽ ãå
šå¹
ã«ããå¿
èŠãããå Žåã¯
ãããããã£ã䜿çšããããšã奜ã¿ãŸããããšãã°ãé衚瀺ã«ã§ããªãããã²ãŒã·ã§ã³ãªã³ã¯ã®éèŠãªãããã¯ã«ã€ããŠè©±ããŠããå Žåã§ãã

flex-basisããããã£ãé©çšããçµæã¯100ïŒ
ã§ããåã®å³ãèŠããšããã®ããããã£ãé©çšããã®ã¯ç°¡åãªããšã®ããã«æãããããããŸãããå®éã«ã¯ãããã§ã¯ãããŸãããéåžžããµã€ãã®ããããŒã«ã¯ããã£ã³ã°ãå«ããããšãã§ããŸããèŠçŽ ã調æŽããŠå¹ å šäœãåãããšãããã£ã³ã°ãéãªããŸã§ããã¯çºçããŸããããã ããããããåé€ãããšãã¬ã€ã¢ãŠãã®ä»ã®èŠçŽ ã«åœ±é¿ãããããå®çšçã§ã¯ãããŸããã
ãã®åé¡ãä¿®æ£ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
flex: 1 0 100%ããã²ãŒã·ã§ã³ãããã¯ã«è¿œå ããŸãããã- å¿
èŠã«å¿ããŠããã®ããããã£ã倿ŽããŸããã
orderãä»ã®èŠçŽ ãåŠçããå¿ èŠãããå Žåããããããããã²ãŒã·ã§ã³ããã¯ã¹ãæåŸã®èŠçŽ ã§ããããšã確èªããå¿ èŠããããŸãã - å éšããŒãžã³ã®ãµã€ãºã«çããè² ã®å€ã䜿çšããŠãããã²ãŒã·ã§ã³ãããã¯ã®ããŒãžã³ã調æŽããŠã¿ãŸããããããã«ããããã®ãããã¯ãããŒãžã®å¹ å šäœã«è¡šç€ºãããŸãã
- èŠçŽ ã«å°ãã空æ°ããå ¥ãããã«ããã£ã³ã°ã調æŽããŸãããã
- æåŸã«ãããããã£
justify-content: centerã䜿çšããŠããã²ãŒã·ã§ã³èŠçŽ ãäžå€®ã«é 眮ããŸãïŒãã ããããã¯ç¹ã«éèŠã§ã¯ãããŸããïŒã
ã¹ã¿ã€ã«ã¯æ¬¡ã®ãšããã§ãïŒè§æ¬åŒ§å ã¯ãé¢é£ããäžèšã®ãªã¹ãã®é ç®ã§ãïŒã
.nav {
flex: 1 0 100%; /* [1] */
order: 2; /* [2] */
margin: 1rem -1rem -1rem -1rem; /* [3] */
padding: 1rem; /* [4] */
display: flex; /* [5] */
justify-content: center; /* [5] */
}
äžèšã®ã¹ã¿ã€ã«ãããã²ãŒã·ã§ã³èŠçŽ ã®ãªã¹ãã«æ®µéçã«é©çšãããšã次ã®ããã«ãªããŸãã

èŠçŽ ã®ã¹ã¿ã€ãªã³ã°ã段éçã«
âèŠçŽ éã®è·é¢ã調æŽãã
Chromeãã©ãŠã¶ãšFirefoxãã©ãŠã¶ããã®ããããã£ããµããŒããã
gapããã«ãªã£ãããããã¬ãã¯ã¹ã¢ã€ãã éã®ééãéåžžã«ç°¡åã«èª¿æŽã§ããŸããããŒãžã®æ¬¡ã®ããããŒã»ã¯ã·ã§ã³ãèŠãŠãã ããã

ã®ã£ããããããã£ã®äœ¿çš
å³ã§éžæããã¢ã€ãã éã®è·é¢ã調æŽããã«ã¯ã芪ãã¬ãã¯ã¹ã¢ã€ãã ã«ããããã£ã远å ããå¿ èŠããããŸã
gap: 1remããã®ããããã£ã䜿çšããªãå ŽåãèŠçŽ ã®ã¹ã¿ã€ã«ãåãããã«ããå¿
èŠããããŸãã
/* */
.brand {
margin-right: 1rem;
}
.sign-in {
margin-right: 1rem;
}
/* */
.site-header {
/* flexbox-*/
gap: 1rem;
}
ããããã£ã䜿çšãã
gapå Žåã¯ãããŒãžã衚瀺ãããŠãããã©ãŠã¶ã§ãµããŒããããŠããªãå Žåã«åããŠãæºåãšãã©ãŒã«ããã¯ãå¿
èŠã«ãªãããšã«æ³šæããŠãã ãããããã«ã€ããŠã®è©³çްãªèšäºãæžããŸããã
ããã§äŒè©±ã¯çµããã§ãããå¥ããåã«ãç§ã®ãããžã§ã¯ãã®1ã€ã玹ä»ããŸãã
ããããŒ-cssãããžã§ã¯ã
ããã¯ãheaders-cssãããžã§ã¯ãå ã§äœæãããããŒãžããããŒã®äŸã§ãã

headers-cssããã®ããŒãžã®ããããŒ
Webãµã€ãã®ããããŒéšåã®ãã³ãã¬ãŒããåéããåå¥ã®ããŒãžãšããŠèšèšãããããžã§ã¯ããäœæããããšã«ããŸãããããã§ãåæ§ã®èŠçŽ ãå¿ èŠãªå Žåã¯ãããã«èŠã€ããŠæ°ãããããžã§ã¯ãã«çµ±åã§ããŸããã€ãŸããããŒãžããããŒã®17ã®ããªãšãŒã·ã§ã³ãäœæããŸãããè¿ãå°æ¥ããã®ãããžã§ã¯ããæ¡å€§ããäºå®ã§ãããããã®èŠçŽ ã«åãçµãã§ããéãç§ã¯æ¬¡ã®ããšã«ç¹ã«æ³šæãæããŸããã
- æè»æ§ã
- å®å šã«å¿çæ§ã®é«ããã¶ã€ã³ã
- Sassã䜿çšãããšããã³ãã¬ãŒããç°¡åã«ç·šéã§ããŸãïŒãã ãããã®é åã§ã¯ãã³ãŒããå°ããªãã¡ã¯ã¿ãªã³ã°ããå¿ èŠããããŸãïŒã
- ã¢ã¯ã»ã·ããªãã£ïŒäœãåé¡ãçºçããå Žå-ãããžã§ã¯ãã¿ã¹ã¯ãã©ãã«ãŒã«ãšã³ããªã远å ããŠãã ããïŒã
ããã¯ãheaders-cssãããžã§ã¯ãã®åäœã確èªããããã®ããŒãžã§ãããããŠãããã§ã¯ããããžã§ã¯ãã®GitHubã®ãªããžããªã§ãã
WebããŒãžã®ããããŒéšåãã©ã®ããã«äœæããŸããïŒ
