CSSã³ã³ããã¯ãšãªåé¡ã¯ãã¬ã¹ãã³ã·ãWebãã¶ã€ã³ã®ææ°ã¢ãããŒãã§ãããã¥ãŒããŒãã§ã¯ãªãã³ã³ããã®ãµã€ãºã«åºã¥ãããŠã§ããµã€ãã®ã¬ã€ã¢ãŠããšã¹ã¿ã€ã«ã調æŽããæ¹æ³ãåŠã³ãŸãããã
CSSã³ã³ããã¯ãšãªã¿ã€ãã®çè§£ïŒã¬ã¹ãã³ã·ããã¶ã€ã³ã®ããã®ã³ã³ããã¯ãšãªåé¡
ã¬ã¹ãã³ã·ãWebãã¶ã€ã³ã¯ãé·å¹Žã«ããã倧ããé²åããŠããŸãããåœåãç§ãã¡ã¯ãŠã§ããµã€ããããŸããŸãªç»é¢ãµã€ãºã«é©å¿ãããããã«ãã¡ãã£ã¢ã¯ãšãªã«å€§ããäŸåããŠããŸãããããããWebã¢ããªã±ãŒã·ã§ã³ãããè€éã«ãªãã«ã€ããŠãã¡ãã£ã¢ã¯ãšãªã®éçãæããã«ãªããŸãããããã§ç»å Žããã®ãCSSã³ã³ããã¯ãšãªã§ããããã¯CSS仿§ãžã®åŒ·åãªè¿œå æ©èœã§ãããéçºè ã¯ãã¥ãŒããŒãã§ã¯ãªãããããå²ãèŠçŽ ã®ãµã€ãºãç¶æ ã«åºã¥ããŠèŠçŽ ã®ã¹ã¿ã€ã«ãèšå®ã§ããŸããããã«ãããã¯ããã«é«ãæè»æ§ãšã³ã³ããŒãã³ãã¬ãã«ã®ã¬ã¹ãã³ã·ãæ§ãæäŸãããŸãã
ã³ã³ããã¯ãšãªãšã¯ïŒ
æ¬è³ªçã«ãã³ã³ããã¯ãšãªã䜿çšãããšã芪ã³ã³ããã®ãµã€ãºãã¹ã¿ã€ã«ã«åºã¥ããŠCSSã¹ã¿ã€ã«ãé©çšã§ããŸãããµã€ãããŒãã¡ã€ã³ã³ã³ãã³ãé åå ã®å©çšå¯èœãªã¹ããŒã¹ã«å¿ããŠã¬ã€ã¢ãŠããé©å¿ãããå¿ èŠãããã«ãŒãã³ã³ããŒãã³ãã®ã·ããªãªãæ³åããŠã¿ãŠãã ãããã³ã³ããã¯ãšãªã¯ãè€éãªJavaScriptãœãªã¥ãŒã·ã§ã³ã«é Œãããšãªãããããå¯èœã«ããŸãã
ã³ã³ããã¯ãšãªã«ã¯äž»ã«2ã€ã®ã¿ã€ãããããŸãïŒ
- ãµã€ãºã³ã³ããã¯ãšãª: ã³ã³ããã®å¯žæ³ïŒå¹ ãšé«ãïŒãã¯ãšãªããŸãã
- ã¹ããŒãã³ã³ããã¯ãšãª: ã³ã³ããã®ã¹ã¿ã€ã«ãç¶æ ãã¯ãšãªããŸãã
ãã®ããã°èšäºã§ã¯ããµã€ãºã³ã³ããã¯ãšãªã®éèŠãªåŽé¢ã§ããã³ã³ããã¯ãšãªåé¡ã«çŠç¹ãåœãŠãŸãã
ã³ã³ããã¯ãšãªåé¡ïŒåºæ¬ãçè§£ãã
ã³ã³ããã¯ãšãªåé¡ã¯ãç¹å®ã®ãµã€ãºæ©èœãååä»ãã³ã³ããã¿ã€ããšããŠå®çŸ©ããããšã«ããããµã€ãºããŒã¹ã®ã³ã³ããã¯ãšãªãå¹çåããã®ã«åœ¹ç«ã¡ãŸããåã`min-width`ãš`max-width`ã®æ¡ä»¶ãç¹°ãè¿ãèšè¿°ãã代ããã«ãåå©çšå¯èœãªã³ã³ããã¿ã€ããäœæã§ããŸããããã«ãããããã¯ãªãŒã³ã§ãä¿å®æ§ãé«ããèªã¿ãããã³ãŒãã«ãªããŸãã
`@container`ã«ãŒã«ã¯ãã³ã³ããã¯ãšãªãå®çŸ©ããŠé©çšããããã«äœ¿çšãããŸããäžå¿çãªæ§æã«ã¯ãã³ã³ããåãã³ã³ããã¿ã€ããããã³ã³ã³ãããæå®ãããæ¡ä»¶ã«äžèŽããå Žåã«é©çšãããã¹ã¿ã€ã«ãæå®ããããšãå«ãŸããŸãã
ã³ã³ããã¯ãšãªåé¡ã®äž»èŠã³ã³ããŒãã³ã
- ã³ã³ããå: `container-name` CSSããããã£ã䜿çšããŠã³ã³ããèŠçŽ ã«ä»ããååã§ãããã®ååã¯`@container`ã«ãŒã«ã§ã³ã³ãããã¿ãŒã²ããã«ããããã«äœ¿çšãããŸããèå¥åãšããŠæ©èœããŸãã
- ã³ã³ããã¿ã€ã: ã³ã³ããã®ã¿ã€ããæå®ããŸããããã«ããããã©ãŠã¶ã¯ã¯ãšãªã«ã©ã®å¯žæ³ã䜿çšããã©ã®ããã«ã³ã³ãã€ã³ã¡ã³ãã確ç«ãã¹ãããèªèããŸããäžè¬çãªå€ã¯`size`ã`inline-size`ã`block-size`ãããã³`normal`ã§ãã
- ã³ã³ããã¯ãšãªæ¡ä»¶: `@container`ã«ãŒã«å ã®ã¹ã¿ã€ã«ãé©çšãããããã«æºããããªããã°ãªããªãæ¡ä»¶ã§ãããããã®æ¡ä»¶ã¯éåžžãã³ã³ããã®å¯žæ³ããã§ãã¯ããããšãå«ã¿ãŸãã
- ã¹ã¿ã€ã«: ã³ã³ããã¯ãšãªæ¡ä»¶ãæºãããããšãã«é©çšãããCSSã«ãŒã«ã§ãã
ããã«æ·±ãïŒã³ã³ããã¿ã€ããšãã®æå³
`container-type`ããããã£ã¯ãã³ã³ãã€ã³ã¡ã³ãã確ç«ããã³ã³ãããã¯ãšãªããã軞ãå®çŸ©ããããã«äžå¯æ¬ ã§ãããããåãããšãã§ããããŸããŸãªå€ãèŠãŠã¿ãŸãããïŒ
- `size`: ãã®å€ã¯ãã€ã³ã©ã€ã³è»žãšãããã¯è»žã®äž¡æ¹ã«æ²¿ã£ãŠãµã€ãºã³ã³ãã€ã³ã¡ã³ãã確ç«ããŸããã€ãŸããã³ã³ããã®å¹ ãšé«ããã¯ãšãªã«äœ¿çšãããŸããããã¯ãæ±çšã®ã³ã³ããã¯ãšãªã«æãé©ããéžæè¢ã§ããããšãå€ãã§ãã
- `inline-size`: ããã¯ã€ã³ã©ã€ã³è»žïŒéåžžã¯å¹ ïŒã«æ²¿ã£ãŠã®ã¿ãµã€ãºã³ã³ãã€ã³ã¡ã³ãã確ç«ããŸããã³ã³ããã®å¹ ã®å€åã«ã®ã¿åå¿ããå¿ èŠãããå Žåã«äŸ¿å©ã§ãã
- `block-size`: ããã¯ãããã¯è»žïŒéåžžã¯é«ãïŒã«æ²¿ã£ãŠã®ã¿ãµã€ãºã³ã³ãã€ã³ã¡ã³ãã確ç«ããŸããã³ã³ããã®é«ãã®å€åã«ã®ã¿åå¿ããå¿ èŠãããå Žåã«äŸ¿å©ã§ãã
- `normal`: ããã¯ããã©ã«ãå€ã§ããã³ã³ãã€ã³ã¡ã³ãã確ç«ããªããããã³ã³ããã¯ãšãªã¯ãã®èŠçŽ ã«é©çšãããŸããã
ã³ã³ããã¯ãšãªåé¡ã®å®çšçãªäŸ
ã³ã³ããã¯ãšãªåé¡ãã©ã®ããã«æ©èœãããããããã€ãã®å®çšçãªäŸã§ç€ºããŸãããã
äŸ1ïŒé©å¿åã¬ã€ã¢ãŠããæã€ã«ãŒãã³ã³ããŒãã³ã
å¹ ã«åºã¥ããŠã³ã³ãã³ããç°ãªãæ¹æ³ã§è¡šç€ºããå¿ èŠãããã«ãŒãã³ã³ããŒãã³ããæ³åããŠã¿ãŠãã ãããã«ãŒããçãå Žåã¯ãç»åãšããã¹ããåçŽã«ç©ã¿éããããšããŸããã«ãŒããåºãå Žåã¯ããããã䞊ã¹ãŠè¡šç€ºããããšããŸãã
HTML:
<div class="card-container">
<div class="card">
<img src="image.jpg" alt="Card Image">
<div class="card-content">
<h3>Card Title</h3>
<p>Card description goes here.</p>
</div>
</div>
</div>
CSS:
.card-container {
container-name: card;
container-type: inline-size;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 10px;
}
.card img {
width: 100%;
margin-bottom: 10px;
}
@container card (min-width: 300px) {
.card {
flex-direction: row;
}
.card img {
width: 150px;
margin-right: 10px;
margin-bottom: 0;
}
}
解説ïŒ
- `card-container`èŠçŽ ã«`container-name: card`ãš`container-type: inline-size`ãèšå®ããŸããããã«ãããã€ã³ã©ã€ã³ãµã€ãºïŒå¹ ïŒã®å€åã«å¿çãããcardããšããååã®ã³ã³ããã«ãªããŸãã
- `@container card (min-width: 300px)`ã«ãŒã«ã¯ãã³ã³ããã®å¹ ã300ãã¯ã»ã«ä»¥äžã®å Žåã«ã®ã¿ã¹ã¿ã€ã«ãé©çšããŸãã
- `@container`ã«ãŒã«å ã§ãã«ãŒãã®`flex-direction`ã`row`ã«å€æŽããç»åãšããã¹ãã䞊ã¹ãŠè¡šç€ºããŸãã
äŸ2ïŒé©å¿åããã²ãŒã·ã§ã³ããŒ
å©çšå¯èœãªå¹ ã«åºã¥ããŠç°ãªã衚瀺ãããå¿ èŠãããããã²ãŒã·ã§ã³ããŒãèããŠã¿ãŸããããã¹ããŒã¹ãéãããŠããå Žåããã³ããŒã¬ãŒã¡ãã¥ãŒã«æããããŸããŸãã
HTML:
<nav class="nav-container">
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
<button class="hamburger-menu">≡</button>
</nav>
CSS:
.nav-container {
container-name: nav;
container-type: inline-size;
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
}
.nav-list {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
.nav-list li {
margin-right: 20px;
}
.hamburger-menu {
display: none;
background: none;
border: none;
font-size: 24px;
cursor: pointer;
}
@container nav (max-width: 500px) {
.nav-list {
display: none;
}
.hamburger-menu {
display: block;
}
}
解説ïŒ
- `nav-container`èŠçŽ ã«`container-name: nav`ãš`container-type: inline-size`ãèšå®ããŸãã
- `@container nav (max-width: 500px)`ã«ãŒã«ã¯ãã³ã³ããã®å¹ ã500ãã¯ã»ã«ä»¥äžã®å Žåã«ã¹ã¿ã€ã«ãé©çšããŸãã
- `@container`ã«ãŒã«å ã§ãããã²ãŒã·ã§ã³ãªã¹ããé衚瀺ã«ãããã³ããŒã¬ãŒã¡ãã¥ãŒã衚瀺ããŸãã
é«åºŠãªã³ã³ããã¯ãšãªæè¡
ã³ã³ããã¯ãšãªãŠãããã®äœ¿çš
ã³ã³ããã¯ãšãªãŠãããïŒ`cqw`ã`cqh`ã`cqi`ã`cqb`ïŒã¯ãã³ã³ããã®ãµã€ãºã«åºã¥ããçžå¯Ÿçãªåäœã§ãããããã¯ãã³ã³ããã®å¯žæ³ã«é©å¿ããæµåçãªã¬ã€ã¢ãŠããäœæããããã®åŒ·åãªæ¹æ³ãæäŸããŸãããããã¯ãã¥ãŒããŒããŠãããïŒvwãvhïŒã«äŒŒãŠããŸããããã¥ãŒããŒãã§ã¯ãªãã³ã³ããã®ãµã€ãºã«çžå¯Ÿçã§ãã
- `cqw`: ã³ã³ããã®å¹ ã®1%ã
- `cqh`: ã³ã³ããã®é«ãã®1%ã
- `cqi`: ã³ã³ããã®ã€ã³ã©ã€ã³ãµã€ãºã®1%ïŒæšªæžãã¢ãŒãã§ã¯å¹ ïŒã
- `cqb`: ã³ã³ããã®ãããã¯ãµã€ãºã®1%ïŒæšªæžãã¢ãŒãã§ã¯é«ãïŒã
äŸïŒ
.element {
font-size: 2cqw;
padding: 1cqb;
}
ãã®äŸã§ã¯ããã©ã³ããµã€ãºã¯ã³ã³ããã®å¹ ã®2%ã«ãªããããã£ã³ã°ã¯ã³ã³ããã®é«ãã®1%ã«ãªããŸãã
ã³ã³ããã¯ãšãªãšã¡ãã£ã¢ã¯ãšãªã®çµã¿åãã
ã³ã³ããã¯ãšãªãšã¡ãã£ã¢ã¯ãšãªãäžç·ã«äœ¿çšããŠãããã«æŽç·Žãããã¬ã¹ãã³ã·ããã¶ã€ã³ãäœæã§ããŸããããšãã°ãã¡ãã£ã¢ã¯ãšãªã䜿çšããŠããŒãžã®å šäœçãªã¬ã€ã¢ãŠããå¶åŸ¡ããã³ã³ããã¯ãšãªã䜿çšããŠãã®ã¬ã€ã¢ãŠãå ã®åã ã®ã³ã³ããŒãã³ããé©å¿ãããããšãã§ããŸãããã®çµã¿åããã«ãããã°ããŒãã«ãšããŒã«ã«ã®äž¡æ¹ã®ã¬ã¹ãã³ã·ãæ§ãå¯èœã«ãªããŸãã
Shadow DOMã§ã®äœæ¥
ã³ã³ããã¯ãšãªã¯Shadow DOMå ã§ããŸãæ©èœããã³ã³ããã®ãµã€ãºã«å¿çããã«ãã»ã«åãããåå©çšå¯èœãªã³ã³ããŒãã³ããäœæã§ããŸããããã¯ãã³ã³ããŒãã³ãããŒã¹ã®ã¢ãŒããã¯ãã£ã«å€§ããäŸåããè€éãªWebã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«åœ¹ç«ã¡ãŸãã
ã³ã³ããã¯ãšãªã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- ã¢ãã€ã«ãã¡ãŒã¹ãã®ã¢ãããŒãããå§ãã: æåã«æãå°ããã³ã³ãããµã€ãºçšã«ã³ã³ããŒãã³ããèšèšããã³ã³ããã倧ãããªãã«ã€ããŠæ®µéçã«åŒ·åããŸãã
- æå³ã®ããã³ã³ããåã䜿çšãã: ã³ã³ããã®ç®çãåæ ãã説æçãªã³ã³ããåãéžæããŸããããã«ãããã³ãŒããããèªã¿ããããä¿å®ãããããªããŸãã
- é床ã«è€éãªã¯ãšãªãé¿ãã: ã³ã³ããã¯ãšãªã®æ¡ä»¶ã¯ã§ããã ãã·ã³ãã«ã«ä¿ã¡ãŸããé床ã«è€éãªã¯ãšãªã¯ãã³ãŒããçè§£ããããã°ããã®ãå°é£ã«ããå¯èœæ§ããããŸãã
- 培åºçã«ãã¹ããã: ããŸããŸãªã³ã³ãããµã€ãºã§ã³ã³ããŒãã³ãããã¹ãããããããã¬ã¹ãã³ã·ãã§ãããæ£ããé©å¿ããããšã確èªããŸãããã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠãããŸããŸãªã³ã³ãããµã€ãºãã·ãã¥ã¬ãŒãããŸãã
- ããã©ãŒãã³ã¹ãèæ ®ãã: ã³ã³ããã¯ãšãªã¯å€§ããªå©ç¹ãæäŸããŸãããããã©ãŒãã³ã¹ã«æ³šæããããšãéèŠã§ããã³ã³ããã¯ãšãªå ã§é床ã«è€éãªã¹ã¿ã€ã«ã䜿çšãããšãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããããé¿ããŠãã ãããå¿ èŠã«å¿ããŠãã³ãããŒã¯ãšæé©åãè¡ããŸãã
- ã³ã³ããŒãã³ããææžåãã: ã³ã³ããã¯ãšãªã¯ã³ã³ããŒãã³ãèšèšã«è€éãã®å±€ã远å ãããããå°æ¥ã®ã¡ã³ããã³ã¹ã容æã«ããããã«ãããŸããŸãªã³ã³ãããµã€ãºã§ã®æåŸ ãããåäœãææžåããŠãã ããã
ã³ã³ããã¯ãšãªã®ãã©ãŠã¶ãµããŒã
ã³ã³ããã¯ãšãªã®ãã©ãŠã¶ãµããŒãã¯æ¥éã«æ¡å€§ããŠããŸããChromeãFirefoxãSafariãEdgeãå«ãã»ãšãã©ã®ææ°ãã©ãŠã¶ãçŸåšã³ã³ããã¯ãšãªããµããŒãããŠããŸããã¿ãŒã²ãããªãŒãã£ãšã³ã¹ãã³ã³ããã¯ãšãªã®å©ç¹ãäœéšã§ããããã«ããCan I useãã®ãããªãŠã§ããµã€ãã§åžžã«ææ°ã®ãã©ãŠã¶äºææ§æ å ±ã確èªããŠãã ããã
å€ããã©ãŠã¶ããµããŒãããå¿ èŠãããå Žåã¯ãããªãã£ã«ã䜿çšããŠäºææ§ãæäŸã§ããŸãããã ããããªãã£ã«ã¯ãªãŒããŒãããã远å ããå¯èœæ§ãããããã€ãã£ãã®ã³ã³ããã¯ãšãªã®åäœãå®å šã«åçŸã§ããªãå Žåãããããšã«æ³šæããŠãã ããã
ã³ã³ããã¯ãšãªã«ããã¬ã¹ãã³ã·ããã¶ã€ã³ã®æªæ¥
ã³ã³ããã¯ãšãªã¯ãã¬ã¹ãã³ã·ãWebãã¶ã€ã³ã«ããã倧ããªåé²ã衚ããŠããŸããããã«ãããéçºè ã¯ããæè»ã§ãä¿å®æ§ãé«ããã³ã³ããŒãã³ãé§åã®ãŠã§ããµã€ããäœæã§ããããã«ãªããŸãããã©ãŠã¶ã®ãµããŒããåäžãç¶ããã«ã€ããŠãã³ã³ããã¯ãšãªã¯çŸä»£ã®Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ãŸããŸãäžå¯æ¬ ãªããŒã«ã«ãªãã§ãããã
å®è£ ã«ãããã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ã³ã³ããã¯ãšãªãå®è£ ããéã«ã¯ã以äžã®ç¹ãèæ ®ããŠãã ããïŒ
- ããŒã«ã©ã€ãŒãŒã·ã§ã³ãšåœéåïŒl10nããã³i18nïŒ: ããã¹ãã®é·ãã¯èšèªã«ãã£ãŠå€§ããç°ãªããŸããã³ã³ããã¯ãšãªã¯ãèŠçŽ ãã³ã³ããå ã®ç°ãªãããã¹ããµã€ãºã«é©å¿ãããªãŒããŒãããŒãã¬ã€ã¢ãŠãã®åŽ©ããé²ãããšãä¿èšŒããŸãã
- å³ããå·ŠïŒRTLïŒãžã®èšèª: ã³ã³ããã¯ãšãªã¯èªåçã«RTLã¬ã€ã¢ãŠããåŠçããŸããããšãã°ãã«ãŒãã³ã³ããŒãã³ããã¢ã©ãã¢èªãããã©ã€èªã®ããã«ç»åãšããã¹ãã®äœçœ®ã亀æããå¿ èŠãããå Žåãã³ã³ããã¯ãšãªã¯ããã«å¿ããŠèª¿æŽããŸããå®å šãªRTLãµããŒãã®ããã«ã¯ãè«çããããã£ïŒäŸïŒ`margin-inline-start`ïŒã䜿çšããå¿ èŠããããããããŸããã
- æåçãªãã¶ã€ã³ã®å¥œã¿: æ ¹åºã«ããããžãã¯ã¯åãã§ãããæåçãªãã¶ã€ã³ã®å¥œã¿ã«æ³šæããŠãã ãããç°ãªãã¬ã€ã¢ãŠããèŠèŠèŠçŽ ãç°ãªãæåã§ã©ã®ããã«èªèãããããèæ ®ããŠãã ãããäžéšã®å°åã§ã¯ããããªã¹ããªãã¶ã€ã³ã奜ãŸãããããããŸããããä»ã®å°åã§ã¯ããèŠèŠçã«è±ããªãã¶ã€ã³ã奜ãŸãããããããŸããã
- ã¢ã¯ã»ã·ããªãã£: ã³ã³ããã¯ãšãªã®äœ¿çšãã¢ã¯ã»ã·ããªãã£ã«æªåœ±é¿ãäžããªãããã«ããŠãã ãããããšãã°ãããã¹ããèªã¿ããããã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ããã¹ãŠã®ã³ã³ãããµã€ãºã§ç°¡åã«ã¢ã¯ã»ã¹ã§ããããšã確èªããŠãã ããã
çµè«
ã³ã³ããã¯ãšãªåé¡ã¯ãã¬ã¹ãã³ã·ãWebãã¶ã€ã³ã®æè»æ§ãšä¿å®æ§ãå€§å¹ ã«åäžãããããšãã§ãã匷åãªããŒã«ã§ããããŸããŸãªã³ã³ããã¿ã€ããšãããã广çã«äœ¿çšããæ¹æ³ãçè§£ããããšã§ãç°å¢ã«ã·ãŒã ã¬ã¹ã«é©å¿ããã³ã³ããŒãã³ããäœæããå¹ åºãããã€ã¹ãç»é¢ãµã€ãºã§ããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããã³ã³ããã¯ãšãªãåãå ¥ããWebã¬ã€ã¢ãŠãã«å¯Ÿããæ°ããªã¬ãã«ã®å¶åŸ¡ãè§£ãæŸã¡ãŸãããïŒ