smashingmagazineèšäºã®ç¿»èš³ãç¶ããŠããŸãããã®èšäºã§ã¯ãäŸãšããŠTracks Webãµã€ãã䜿çšããŠãflexboxã䜿çšããã€ã³ã¿ãŒãã§ã€ã¹éçºã®ãã¹ãŠã®ãã¥ã¢ã³ã¹ã詳ãã説æããŠããŸã ã
ããŒã1æååå
¥åãã©ãŒã
ãã©ãŒã ã¯ãç¹ã«Photoshopã§äœæãããè€éãªã¡ãã·ã¥ãã¶ã€ã³ã«å¯æ¥ã«é¢é£ããŠããå Žåãéçºè
ã«ãšã£ãŠæªå€¢ã«ãªãåŸãŸãã ç§ãèšããå°æåã©ãã«ããã³ãã¬ãŒãã¯ãããã¯ãã¥ãŒãžãã¯ã®ãã§ã³ããŒã¹ãã©ããã£ã¹ã¿ãŒãšåã圹å²ãæ¥çã§æã£ãŠããŸãã
åã®ã»ã¯ã·ã§ã³ã§è¿°ã¹ãããã«ããã©ãŠã¶ã®ãµã€ãºãå€æŽããããšãããŸãã¯åçã³ã³ãã³ãã䜿çšãããšãã«ãã³ã³ãã³ãã®é
眮æ¹æ³ã決å®ããã³ã³ããã®ã¹ããŒã¹ãå æããŸãã
ã³ã³ãã³ãã®æçš¿æ¹æ³ãèªåã§æ±ºããŠãã ããã å·ŠåŽã§ã¯ã衚圢åŒã®ãã£ã¹ãã¬ã€ã¯äžå€®ã«åçŽã«é
眮ãããŸãã å³åŽã®flexboxã¯ãèŠçŽ ãäžå€®ã«æããŸãããããã®ã¹ã¯ãªãŒã³ã·ã§ããã¯ãåçãŸãã¯é·ãããã³ã³ãã³ãã䜿çšããå Žåã«ãã¬ãã¯ã¹ããã¯ã¹ãåŒãèµ·ããå¯èœæ§ã®ãããšã©ãŒãæ確ã«åæ ããŠããŸãã å³åŽã®ç»åã«ç€ºãããŠããå¹æã¯ããã»ã³ã¿ãŒãªãã»ããããšåŒã°ãããã®ã§ããããã¯ãã³ã³ãã³ããx軞ãšy軞ã«æ²¿ã£ãŠäžå¿ãããããŠããããšãæå³ããŸãã
ããã¯ãå³ã«ç€ºãã€ã³ã©ã€ã³ã©ãã«ãã³ãã¬ãŒãã®ããŒã¯ã¢ããã§ãã 8ã
<div class="form-group"> <label>âŠ</label> <select>âŠ</select> </div>
ãã®å Žåã®åé¡ã®è§£æ±ºçã¯ãdisplayïŒtable;ã䜿çšããããšã§ãã ããã¹ãã®é·ãããã䟿å©ã«å¶åŸ¡ããããã ããã«ãããã³ã³ãã³ããã»ã³ã¿ãŒããã¯ããŒã«ãããã®ã§ã¯ãªããäžã«æµããŸãã
.form-group { display: flex; } .form-group label { display: table; vertical-align: middle; } .form-group input { flex: 1; }
ãã¬ãã¯ã¹ããã¯ã¹ãšããŒãã«ãçµã¿åãããããšã¯è¯ãæ¹æ³ã§ããããã«è©³ãã調ã¹ãããšããå§ãããŸãã ãããã®èŠçŽ ãçµã¿åããããšãã¯ãã¬ã€ã¢ãŠãã®ãã°ãæéå
ã«æ€åºããããã«ãåžžã«ç°ãªããã¹ãç°å¢ã§ãã¹ãããŠãã ããã
ãã®ãããªãã³ãã¬ãŒãã䜿çšããŠå®æããå€ãã®æ€çŽ¢ãã£ãŒã«ããèŠãŠããŸããã ããã¯éåžžã«æè»ãªãã³ãã¬ãŒãã§ãããèšå€§ãªæ°ã®ã¬ã€ã¢ãŠãã§äœ¿çšã§ããŸãã ãã¡ãããã³ã³ããã¹ãã«é¢é£ããããããã£ãäžè¬çãªãã³ãã¬ãŒãã«é¢é£ããªãããããã£ãªã©ãä»å
¥ããå¯èœæ§ã®ããCSSèŠçŽ ã¯åé¢ããŠããå¿
èŠããããŸãã
ããã®HTMLã¯ããªãæšæºçãªãã®ã§ããã¬ãã¯ã¹ããã¯ã¹æ§é ãå®çŸ©ããåšå²ã®divãå«ãŸããŠããŸãã
HTMLã¯æ¬¡ã®ããã«ãªããŸãã
<div class="form-group"> <input type="text" placeholder="Add a noteâŠ"> <button>Add</button> </div>
CSS
.form-group { display: flex; } .form-group input { flex: 1; }
ããããããŠã³ã¡ãã¥ãŒ
ããããããŠã³ã¡ãã¥ãŒã¯ãè¡ã®åçŽæ¹åã«äžå€®ã«é
眮ãããã¢ã€ãã ãå«ãå·ŠåŽã®åãšå³åŽã®ã¢ã€ãã ã®ãªã¹ãã§æ§æãããŸãããªã¹ãã®åã¢ã€ãã ã¯ããããã®è¡ã«ãããŸãã
ãã®ã¡ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã®ã¡ãã¥ãŒã¯ãã¬ã€ã¢ãŠãçšã®flexboxã®ã¿ã§æ§ç¯ãããŸããã <nav class="menu"> <div class="menu__options"> <a href="export-data.html">Export</a> <a href="help.html">Get Help</a> </div> <div class="menu__items"> <a href="account.html">Account</a> <a href="preferences.html">Preferences</a> <a href="users.html">Users</a> <a href="payment.html">Payments</a> <a href="logout.html">Logout</a> </div> </nav>
CSSã¯ã·ã³ãã«ã§èªã¿ããã-éçºè
ã奜ãæ¹æ³ã§ãã
.menu { display: flex; } .menu__options { display: flex; align-items: center; } .menu__items { display: flex; flex-direction: column; }
ã»ãã®æ°è¡ã®ã³ãŒãã§ãå®ç§ãªã¬ã€ã¢ãŠããåŸãããŸãã ãŸããã¡ãã·ã¥æ§é ããåé¢ãããŠãããHTMLãšCSSã«ã¯æå³çãªæå³ããããŸãã ããã¯ãè€éãªããžã·ã§ãã³ã°æŠè¡ãšåé·ããŒã¯ã¢ãããåé¿ãããã¬ãã¯ã¹ããã¯ã¹ã®ãã1ã€ã®äŸã§ãã
ã¡ãã£ã¢
ãã¬ãã¯ã¹ããã¯ã¹ã䜿çšãããšãåºå®å¹
ã®SVGãå·ŠåŽã«é
眮ãããæè»ãªã³ã³ãã³ãããã®é£ã«é
眮ãããŸãã <div class="media-obj"> <div class="media-obj__fig">âŠ</div> <div class="media-obj__body">âŠ</div> </div>
CSSã¯æ¬¡ã®ããã«ãªããŸãã
.medi-obj { display: flex; align-items: flex-start; } .media-obj__body { flex: 1; }
ãã©ãŠã¶ã®ãµã€ãºãå€æŽãããã®äŸã§ã¯ãç»åã®å¹
ã¯æ倧100ïŒ
ã«èšå®ãããå³åŽã¯1ã®æè»ãªå€ã«èšå®ãããŸããåºå®å¹
ãšæè»ãªåèŠçŽ ã®çµã¿åããã«æ³šæããŠãã ãããFlexboxã¯ãã®åœ¢åŒã®ãã³ãã¬ãŒãã§ã¯ããŸãæ©èœããŸãããäžèšã®ããã«ãã³ã³ãã³ããããã«é£æ¥ããã³ã³ãã³ãã«ã©ã®ããã«åå¿ãããã«æ³šæããŠãã ããã äžèšã®ãããªã§ã¯ãã°ã©ãã£ãã¯ã¹ã¹ããŒã¹ãã©ã®ããã«æããããŸããããã¹ããç»åäžã«è¡šç€ºããããã瀺ããŠããŸãã ãã®äŸã¯ã°ãããŠããããã«èŠãããããããŸããããã©ãŠã¶ã®å¹
ãããã»ã©å°ããããããšãã»ãšãã©èª°ã決ããŠããªãããã§ãã äžçªäžã®è¡ã¯ããã¬ãã¯ã¹ããã¯ã¹ã®äœ¿çšãéå§ããåã«ãã³ã³ãã³ããç°å¢ã«ã©ã®ããã«é¢é£ããããç解ããå¿
èŠããããšããããšã§ãã
ãã®ãã³ãã¬ãŒãã§ã¯ãç»åã®å¹
ãmax-widthã«èšå®ããããšããå§ãããŸãïŒæè»ãªèŠªã®å
åŽã«äžŠã¶ãã³ã«100ïŒ
ã«ããããç»åã«åºå®å¹
ãäžããŠãããã¡ãã£ã¢ã¯ãšãªã䜿çšããŠå¿
èŠã«å¿ããŠç»åãæ§æããŸãã
ã«ã¬ã³ããŒ
ãã®ã¢ãããŒãã䜿çšããŠã«ã¬ã³ããŒãäœæããªãããã«ããã«ã¯ã©ãããã°ããã§ããïŒ ãããŒãã«ã䜿çšããªãã®ã¯ãªãã§ããããšå°ããã§ãããã ãã®å Žåãã«ã¬ã³ããŒã䜿çšããŠæ¥ä»ãéžæãããããæ¥ãæã幎ããšã«ãã¿ã³ã䜿çšãããããã®ãã¿ã³ãè¡ã«ãã€ã³ãããããšã«ããŸããïŒã«ã¬ã³ããŒã®åè¡ã¯divã§å²ãŸããŠããŸãïŒã ãã®ã¢ãããŒãã䜿çšãããšãããŒã¯ã¢ãããå°ãªããªããã¬ã€ã¢ãŠããã·ã³ãã«ã«ãªããŸãã
ããŒã¯ã¢ããã¯æ¬åœã«ç°¡åã§ãã«ã¬ã³ããŒããããŒã®çªå·ä»ãã³ã³ãããŒã«ã§ãæ©èœããŸãã
<div class="datepicker"> <header class="datepicker__header flex-container"> <button>Left Arrow</button> <span>2015</span> <button>Right Arrow</button> </header> <div class="datepicker__view flex-container"> <button>Jan</button> <button>Feb</button> </div> </div>
CSSã¯æ±ºããŠç°¡åã§ã¯ãããŸããã ã³ãŒããèªããã¹ãŠã®äººãç解ã§ããã³ãŒããæžããšãã¯éåžžã«ç°¡åã§ãã
.flex-container { display: flex; } .datepicker__header { justify-content: space-between; } .datepicker__view { align-items: center; justify-content: flex-start; }
ãã®1ãæã®ã«ã¬ã³ããŒã§ã¯ãå·ŠåŽã§justify-contentïŒspace-betweenã䜿çšãããå³åŽã§justify-contentïŒflex-startã䜿çšãããŸãã äž¡æ¹ã®é¢æ°ã¯ãã³ã³ãã³ãã®ã¬ã³ããªã³ã°æ¹æ³ãç°ãªããŸããããã2ã€ã®äŸã¯ããã¹ãŠãäºåã«èšç»ããå¿
èŠãããçç±ãæ確ã«ç€ºããŠããŸãã ã³ã³ãã³ãã¯ã©ã®ããã«è»¢éãããŸããïŒ ãã¥ãŒããŒãã®ãµã€ãºå€æŽã«ã©ã®ããã«åå¿ããŸããïŒ ã³ã³ãã³ãã転éããå¿
èŠããããŸããïŒ ã³ã³ãã³ãã®é©åãªæŠç¥ãåŸãã«ã¯ãããããã¹ãŠã®è³ªåã«çããå¿
èŠããããŸãã
ã¬ã€ã¢ãŠã
Flexboxã¯ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã«ã¯æé©ã§ãããç¹å®ã®ãã³ãã¬ãŒãã§ãåé¡ãªãæ©èœããŸãã
ã¬ã€ã¢ãŠãã®äŸã å·ŠåŽã®ãµã€ãããŒãšå³åŽã®ã¡ã€ã³ã³ã³ãã³ãã¯ãflexboxã«æé©ãªã¹ã¯ãªããã§ãã 圌ã¯ãŸããåœã®ã¹ããŒã«ãŒãã¯ããã¯ãæãåºãããŸãã ãã®ã¬ã€ã¢ãŠãã®ã³ãŒãã¯å®è£
ãéåžžã«ç°¡åã§ããã©ãŒã«ããã¯ãªãã·ã§ã³ã«å¿
èŠãªè¿œå ã³ãŒãã¯æå°éã§ãã
adminã¬ã€ã¢ãŠãã®ã¬ã€ã¢ãŠãã¯ãäžèšã®ããã«ãåã³ã³ãããŒãä¿æããdivèŠçŽ ã®ã»ããã䜿çšããŸãã
<div class="admin-ui"> <div class="admin-ui__nav">âŠ</div> <div class="admin-ui__body"> <nav>âŠ</nav> <main>âŠ</main> </div> </div>
.admin-ui__body { display: flex; } .admin-ui__body nav { flex: 30%; } .admin-ui__body main { flex: 70%; }
ããã«ãã¬ã€ã¢ãŠãã®åªãããã©ãŒã«ããã¯ããããŸãã ãã®ãã³ãã¬ãŒãã«ã¯ãè€éãªã¡ãã·ã¥æ§é ã¯å«ãŸããŠããŸããã ããã«ãç§ãã¡ã®æ§åã®ãã£ã¹ãã¬ã€ïŒããŒãã«ã¯å¿
èŠãªãšãã«ç§ãã¡ãå©ããæºåãã§ããŠããŸãã
displayïŒtable-cellèŠçŽ ã¯ãCSS 2ã®æ代ã«å°å
¥ããã匷åãªCSSããŒã«ã§ããããã®ããã®çæ³çã«ä¿¡é Œã§ãããã©ãŒã«ããã¯ã§ãã ãã®å€ã«ãããèŠçŽ ã¯ããŒãã«èŠçŽ ã®ããã«åäœããŸããããã¯ããŸãã«ãã¬ãã¯ã¹ããã¯ã¹ããŒãžã§ã³ãåäœæããããã«å¿
èŠãªåäœã§ãã displayïŒtable-header-groupãdisplayïŒtable-footer-groupãªã©ã®å®£èšã䜿çšããŠãããŒãã«ã䜿çšããŠäžŠã¹æ¿ããããšãã§ããŸãã
åºå®ããã¿ãŒ
åºå®ããã¿ãŒ-ããã¯ãçµéšè±å¯ãªWebãã¶ã€ããŒã®éå§ååŒã®1ã€ã§ãããã¿ãŒã¯è¡šç€ºé åã®äžéšã«é
眮ããå¿
èŠããããŸãã ã³ã³ãã³ããè¿œå ãããå Žåãããã¿ãŒãäžã«ç§»åã§ããŸããããã以å€ã®å Žåãããã¿ãŒã¯åžžã«è¡šç€ºé åã®äžéšã«ããå¿
èŠããããŸãã
å³ãµã€ãããŒã®åºå®ããã¿ãŒå³ãµã€ãããŒã®ã¬ã€ã¢ãŠãã¯æ¬¡ã®ãšããã§ãã
<div class="admin-edit"> <button class="admin-edit__save">Save Deal</button> <div class="admin-edit__footer"> <p>âŠ</p> <button>Copy</button> <button>Delete</button> </div> </div>
ãããŠããããCSSã®å€èŠ³ã§ãã
.admin-edit { display: flex; flex-direction: column; justify-content: space-between; }
次㫠ããã¬ãã¯ã¹ããã¯ã¹ã®åºå®ããã¿ãŒã®åªãããã©ãŒã«ããã¯ã瀺ããŸããããã¯ãIE 6ãŸã§ã®ãã¹ãŠã®ããŒãžã§ã³ã§ã¬ã€ã¢ãŠããä¿æããŸãã
ãã¬ãã¯ã¹ããã¯ã¹ã䜿çšããããšããã¬ã€ã¢ãŠãã®å¥ã®éšåã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ãã¥ãŒã§ããããŸãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã€ãã©ã€ã³ããšãåŒã°ããŸãã åã«ãŒãã«ã¯ç¹å®ã®å¹
ããããflexããããã£ã䜿çšããŸãã ããã«ãããåã«ãŒãã«åäžãªæ¯çãäžããããŸãã
Flexboxã§ã¯ãåã«ãŒãã«ãã¡ããšã³ã³ãã³ããé
眮ã§ããŸãã æ ç»ãStartãã®ããã«ãã¢ããªã±ãŒã·ã§ã³å
šäœãã¬ã€ã¢ãŠãã®1ã€ã®å€§ããªããŒãžã§ã³ã§ãããflexboxã«ã¯flexboxãå«ãŸããããã«ã¯flexboxã䜿çšããå°ããªååãšååãå«ãŸããŸãã éçºè
ã以åã«èŠçŽ ãäžå€®ã«é
眮ããããšãã©ãã»ã©å°é£ã§ãã£ãããèãããšä¿¡ããããªãããã«æããŸãããä»æ¥ã¯ã»ãã®æ°è¡ã®ã³ãŒãã§ãããè¡ããŸãã
æ°ãã€ããŠ
ãã©ãŠã¶ã®ãã¹ãäžã«ãIE 10ã§ããŒãžã衚瀺ãããšãã«flexããããã£ãšã€ã³ãã³ããªã©ã®ä»ã®è·é¢ããããã£ãçµã¿åããããšãã°ãçºçããããšãããããŸãã
.parent { display: flex; } .parent .child { flex: 1; padding: 20px; }
displayïŒflexã§æå®ãããã¢ãžã¥ãŒã«ã®èŠªã·ã§ã«ã«ãããã£ã³ã°ãŸãã¯ããŒãžã³ãšãšãã«flexããããã£ã䜿çšããåãããå ŽåãIE 10ã§ãšã©ãŒãçºçããŸãã
@supportsïŒdisplayïŒflexïŒ{}é¢æ°ãªã¯ãšã¹ãã¯
Modernizrã®ãããªãã®ã§ããããã€ãã£ãCSSã䜿çšããŠå®è£
ãããŸãã æ®å¿µãªãããçŸæç¹ã§ã¯@supportsã®ãµããŒãã¯ããªã匱ãããããã®ãªãã·ã§ã³ã¯é¿ããå¿
èŠããããŸãã 代ããã«ããã©ãŒã«ããã¯ãªãã·ã§ã³ã®ãã³ãã次ã«ç€ºããŸãã
- Modernizrã®no-flexboxã¯ã©ã¹ã䜿çšããŠãããããã£ãæ€çŽ¢ããŸã
- å€æãŸãã¯ããŒãã«ãããã³ã°ã䜿çšããŠäžå€®ã«é
眮ããŸãã
- ããŒãã«ãããã³ã°ã䜿çšããŸãã
- table-captionãtable-header-groupãtable-footer-groupãªã©ã®ããŒãã«è¡šç€ºããããã£ã§é åºãå¶åŸ¡ããŸãã
- ãã¹ãŠã®æ§é ã®ãã©ãŒã«ããã¯ãšããŠãããŒãã䜿çšããŸãã
- å°æåãã¿ãŒã³ã®ãã©ãŒã«ããã¯ãšããŠãå°æåãŸãã¯å°æåã®ãããã¯ã䜿çšããŸãã
- IE 9以åã®æ¡ä»¶ä»ãã³ã¡ã³ãã䜿çšããŠããã¬ãã¯ã¹ããã¯ã¹ã®ãªãå€èŠ³ãäœæããŸãã
Habrèªè
åãã®Paystoæ¯æããœãªã¥ãŒã·ã§ã³ïŒ