ããã«ã¡ã¯ãã¢ã€ã¬ããæ ªåŒäŒç€Ÿãã¶ã€ã³äºæ¥éšã®äžç§ã§ãã
ä»åã¯æ°ããã¬ã¹ãã³ã·ããã¶ã€ã³ã®å®è£
æ¹æ³ãšæåŸ
ãããŠããContainer Queriesã«ã€ããŠèª¿ã¹ãŠã¿ãŸããã
以åããè³ã«ã¯ããŠãããã®ã®ãã©ã®ãããªäœ¿ãæããããã詳ããææ¡ããããŠããŸããã§ããã
å
æ¥ãªãªãŒã¹ãããChrome 105ã§ããµããŒããããããããã®æ©äŒã«çè§£ãé²ããŠã¿ãããšæããŸãã
Container Queriesãšã¯
MDNã«ãããšããã³ã³ããã®ãµã€ãºãèŠãŠãã³ã³ããå ã®ã¹ããŒã¹ã«å¿ããŠã¬ã€ã¢ãŠãã調æŽã§ããããšãããŸãã
ãã®ãã³ã³ããããšã¯ãåºæ¬çã«ã¹ã¿ã€ã«æå®ãè¡ãã³ã³ããŒãã³ãã®èŠªèŠçŽ ã«ãªããŸãã
äŸãã°ããµã€ãããŒãšã¡ã€ã³ãšãªã¢ã§æ§æèŠçŽ ãåçã®ã¢ã€ãã ã³ã³ããŒãã³ãAãããå Žåã

- ãµã€ãããŒã®ã¢ã€ãã ã³ã³ããŒãã³ãAã«ãšã£ãŠã¯ããµã€ãããŒã®ãšãªã¢
- ã¡ã€ã³ãšãªã¢ã®ã¢ã€ãã ã³ã³ããŒãã³ãAã«ãšã£ãŠã¯ãã¡ã€ã³ã®ã³ã³ãã³ããšãªã¢
ã®ããããããã³ã³ãããã«åœãããã³ã³ããã®ãµã€ãºã«å¿ããŠã³ã³ããŒãã³ãAã®CSSã®æå®ãæžãåããããšãå¯èœ ã«ãªããŸãã
Container Queriesã¯çŸæç¹ã§FireFox以å€ã®ã¢ãã³ãã©ãŠã¶ã§ãµããŒããããŠããŸãã
FireFoxã«ã察å¿ãå¿
èŠãªå®éã®ãããžã§ã¯ãã§ã¯ãPolyfill ã䜿çšããããšãçŸå®çãªææ³ãšãªãããã§ãã
Media Queriesãšã®éã
åŸæ¥ãã䜿çšããŠããMedia Queriesãšã®éãã¯ã©ãã«ããã®ã§ããããã
Media Queriesã§ã¯ãåºæ¬çã«ç»é¢ã®ãã¥ãŒããŒãå¹
ã«å¿ããŠã¬ã€ã¢ãŠããåãæ¿ããŠããŸããã
察ããŠContainer Queriesã¯ãã³ã³ããå¹
ã«åºã¥ããŠã³ã³ããŒãã³ãã®CSSãåãæ¿ããããšãã§ããããããããŸã§ããæè»ãã€ã·ã³ãã«ã«CSSãèšè¿°ã§ããã±ãŒã¹ãã§ãŠãããã§ãã

ãã®äŸã®ããã«æ§æèŠçŽ ãåçã®ã³ã³ããŒãã³ãã1ç»é¢å ã«ããå Žåã§ããç»é¢ã®ãã¥ãŒããŒãå¹ ã§ã¯ãªããããããã®ã³ã³ããå¹ ããæå®ããã¹ã¿ã€ã«é©çšãã§ããŸãã
ãããŸã§ã¯åå¥ã«ã³ã³ããŒãã³ãã«å¯ŸããŠã¯ã©ã¹ã远å ä»äžãããªã©ã®å¿ èŠããããŸããããContainer Queriesã䜿ãã°CSSã®ã¿ã§ã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ãåå²ãããããšãã§ããŸãã
䜿ã£ãŠã¿ã
ãããŸã§äŸã§èŠãŠãããµã€ãããŒãšã¡ã€ã³ã®ãšãªã¢ã§ãæ§æèŠçŽ ãåçã®ã¢ã€ãã ã³ã³ããŒãã³ããç°¡çŽ ãªåœ¢ã§æžããŠã¿ãŸããã
å
šäœã div.wrapper ã§å²ã div.sidebar ãš div.main ãå·Šå³ã«é
眮ããŸãã
ããããã®ã¢ã€ãã ãªã¹ã㯠ul.list ãã³ã³ããŒãã³ã㯠li.item ãšããŠããŒã¯ã¢ããããŠããŸãã
CSSã®Container Queriesã®éšåã¯äžèšã®ããã«ãªã£ãŠããŸãã
.list {
container-type: inline-size;
}
@container(min-width:400px) {
.item {
display: flex;
}
}
芪ã®ã³ã³ãããšãªã ul.list ã« container-type: inline-size ãæå®ããŸãã
ããã©ã«ãã¯ããã¹ãã瞊䞊ã³ïŒ display: block ïŒã«ãªããã³ã³ããã400px以äžã®éã¯ããã¹ããæšªäžŠã³ã«ãªãããã«ããããã @container(min-width:400px) {} ã®äžã« li.item ã display: flex ããããã«èšè¿°ããŸãã
ç»é¢ããªãµã€ãºããªãã確èªãããšåãããããã§ããããã¥ãŒããŒãå¹ ã§ã¯ãªãã³ã³ããå¹ ã«ãã£ãŠã¹ã¿ã€ã«ã®å€æŽãé©çšãããŠããããšã確èªã§ããŸããã
ãŸãšã
Container Queriesã«åããŠè§ŠããŠã¿ãŸããããä»åŸã®ã¬ã¹ãã³ã·ããã¶ã€ã³ã«å¯Ÿããã¢ãããŒãã«å¹ ãæãããŠããããããªæ©èœã ãšæããŸããã
ã³ã³ããå¹
ã§CSSæå®ãã§ããããšã§ãèªç±åºŠãå¢ãåé¢ããã¶ã€ã³ãã³ãŒãã£ã³ã°ã®ã«ãŒã«ãããéèŠã«ãªã£ãŠããŸãã
Figmaã®Auto Layoutãªã©ãã¶ã€ã³ããŒã«ã§åºæ¥ãããšãšã®èŠªåæ§ãé«ããã§ãããåæã«ãã¶ã€ããŒãšã®é£æºãå¯ã«è¡ã£ãŠããå¿
èŠãããããã§ãã
ãªããªãã¡ãªããã®ã¿åãå ¥ããã®ã¯é£ããã§ãããç¹ã«ã³ã³ããŒãã³ãæåã®éçºãªã©ã§ã¯PolyfillãçšããŠåãå ¥ããããšãæ€èšããŠã¿ãŠãé¢çœããšæããŸããã
以åããè³ã«ã¯ããŠãããã®ã®ãã©ã®ãããªäœ¿ãæããããã詳ããææ¡ããããŠããŸããã§ããã
å
æ¥ãªãªãŒã¹ãããChrome 105ã§ããµããŒããããããããã®æ©äŒã«çè§£ãé²ããŠã¿ãããšæããŸãã
# Container Queriesãšã¯
[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries)ã«ãããšããã³ã³ããã®ãµã€ãºãèŠãŠãã³ã³ããå ã®ã¹ããŒã¹ã«å¿ããŠã¬ã€ã¢ãŠãã調æŽã§ããããšãããŸãã
ãã®ãã³ã³ããããšã¯ãåºæ¬çã«ã¹ã¿ã€ã«æå®ãè¡ãã³ã³ããŒãã³ãã®èŠªèŠçŽ ã«ãªããŸãã

äŸãã°ããµã€ãããŒãšã¡ã€ã³ãšãªã¢ã§æ§æèŠçŽ ãåçã®ã¢ã€ãã ã³ã³ããŒãã³ãAãããå Žåã

- ãµã€ãããŒã®ã¢ã€ãã ã³ã³ããŒãã³ãAã«ãšã£ãŠã¯ã**ãµã€ãããŒã®ãšãªã¢**
â ã¡ã€ã³ãšãªã¢ã®ã¢ã€ãã ã³ã³ããŒãã³ãAã«ãšã£ãŠã¯ã**ã¡ã€ã³ã®ã³ã³ãã³ããšãªã¢**
ã®ããããããã³ã³ãããã«åœããã**ã³ã³ããã®ãµã€ãºã«å¿ããŠã³ã³ããŒãã³ãAã®CSSã®æå®ãæžãåããããšãå¯èœ** ã«ãªããŸãã
Container Queriesã¯çŸæç¹ã§FireFox以å€ã®ã¢ãã³ãã©ãŠã¶ã§ãµããŒããããŠããŸãã
FireFoxã«ã察å¿ãå¿
èŠãªå®éã®ãããžã§ã¯ãã§ã¯ã[Polyfill](https://github.com/GoogleChromeLabs/container-query-polyfill) ã䜿çšããããšãçŸå®çãªææ³ãšãªãããã§ãã
# Media Queriesãšã®éã
åŸæ¥ãã䜿çšããŠããMedia Queriesãšã®éãã¯ã©ãã«ããã®ã§ããããã

Media Queriesã§ã¯ãåºæ¬çã«ç»é¢ã®ãã¥ãŒããŒãå¹
ã«å¿ããŠã¬ã€ã¢ãŠããåãæ¿ããŠããŸããã
察ããŠContainer Queriesã¯ãã³ã³ããå¹
ã«åºã¥ããŠã³ã³ããŒãã³ãã®CSSãåãæ¿ããããšãã§ããããããããŸã§ããæè»ãã€ã·ã³ãã«ã«CSSãèšè¿°ã§ããã±ãŒã¹ãã§ãŠãããã§ãã

ãã®äŸã®ããã«æ§æèŠçŽ ãåçã®ã³ã³ããŒãã³ãã1ç»é¢å ã«ããå Žåã§ããç»é¢ã®ãã¥ãŒããŒãå¹ ã§ã¯ãªããããããã®ã³ã³ããå¹ ããæå®ããã¹ã¿ã€ã«é©çšãã§ããŸãã
ãããŸã§ã¯åå¥ã«ã³ã³ããŒãã³ãã«å¯ŸããŠã¯ã©ã¹ã远å ä»äžãããªã©ã®å¿ èŠããããŸããããContainer Queriesã䜿ãã°CSSã®ã¿ã§ã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ãåå²ãããããšãã§ããŸãã
# 䜿ã£ãŠã¿ã
ãããŸã§äŸã§èŠãŠãããµã€ãããŒãšã¡ã€ã³ã®ãšãªã¢ã§ãæ§æèŠçŽ ãåçã®ã¢ã€ãã ã³ã³ããŒãã³ããç°¡çŽ ãªåœ¢ã§æžããŠã¿ãŸããã
å
šäœã `div.wrapper` ã§å²ã `div.sidebar` ãš `div.main` ãå·Šå³ã«é
眮ããŸãã
ããããã®ã¢ã€ãã ãªã¹ã㯠`ul.list` ãã³ã³ããŒãã³ã㯠`li.item` ãšããŠããŒã¯ã¢ããããŠããŸãã
CSSã®Container Queriesã®éšåã¯äžèšã®ããã«ãªã£ãŠããŸãã
â`css
.list {
container-type: inline-size;
}
@container(min-width:400px) {
.item {
display: flex;
}
}
â`
芪ã®ã³ã³ãããšãªã `ul.list` ã« `container-type: inline-size` ãæå®ããŸãã
ããã©ã«ãã¯ããã¹ãã瞊䞊ã³ïŒ `display: block` ïŒã«ãªããã³ã³ããã400px以äžã®éã¯ããã¹ããæšªäžŠã³ã«ãªãããã«ããããã `@container(min-width:400px) {}` ã®äžã« `li.item` ã `display: flex` ããããã«èšè¿°ããŸãã

ç»é¢ããªãµã€ãºããªãã確èªãããšåãããããã§ããããã¥ãŒããŒãå¹ ã§ã¯ãªãã³ã³ããå¹ ã«ãã£ãŠã¹ã¿ã€ã«ã®å€æŽãé©çšãããŠããããšã確èªã§ããŸããã
# ãŸãšã
Container Queriesã«åããŠè§ŠããŠã¿ãŸããããä»åŸã®ã¬ã¹ãã³ã·ããã¶ã€ã³ã«å¯Ÿããã¢ãããŒãã«å¹ ãæãããŠããããããªæ©èœã ãšæããŸããã
ã³ã³ããå¹
ã§CSSæå®ãã§ããããšã§ãèªç±åºŠãå¢ãåé¢ããã¶ã€ã³ãã³ãŒãã£ã³ã°ã®ã«ãŒã«ãããéèŠã«ãªã£ãŠããŸãã
Figmaã®Auto Layoutãªã©ãã¶ã€ã³ããŒã«ã§åºæ¥ãããšãšã®èŠªåæ§ãé«ããã§ãããåæã«ãã¶ã€ããŒãšã®é£æºãå¯ã«è¡ã£ãŠããå¿
èŠãããããã§ãã
ãªããªãã¡ãªããã®ã¿åãå ¥ããã®ã¯é£ããã§ãããç¹ã«ã³ã³ããŒãã³ãæåã®éçºãªã©ã§ã¯PolyfillãçšããŠåãå ¥ããããšãæ€èšããŠã¿ãŠãé¢çœããšæããŸããã


