CSSãµãã°ãªããã®è€éããæ¢ããå¶çŽã®äŒæãšãã¹ããããã°ãªããã¬ã€ã¢ãŠããžã®åœ±é¿ã«çŠç¹ãåœãŠãŸãããµãã°ãªããã芪ã°ãªããã®ãã©ãã¯ãµã€ãºãç¶æ¿ããå ç¢ã§æè»ãªãã¶ã€ã³ãå®çŸããæ¹æ³ãåŠã³ãŸãã
CSSãµãã°ãªããã¬ã€ã¢ãŠãïŒå¶çŽã®äŒæãšãã¹ããããã°ãªããã®äŸåé¢ä¿ãçè§£ãã
CSSã°ãªããã¬ã€ã¢ãŠãã®åŒ·åãªæ¡åŒµæ©èœã§ããCSSãµãã°ãªããã¯ãã°ãªããã¢ã€ãã ã芪ã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ã«åå ã§ããããã«ããŸãããã®æ©èœã¯ãã°ãã°å¶çŽã®äŒæãšåŒã°ãã芪ã°ãªãããšåã°ãªããéã§ãã©ãã¯å®çŸ©ãå ±æããããšã§ãè€éã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠãã®äœæãå¯èœã«ããŸãããµãã°ãªããããã¹ããããã°ãªããæ§é å ã§ã©ã®ããã«çžäºäœçšããããçè§£ããããšã¯ãé«åºŠãªCSSã¬ã€ã¢ãŠãæè¡ãç¿åŸããããã«äžå¯æ¬ ã§ãã
CSSãµãã°ãªãããšã¯ïŒ
å¶çŽã®äŒæã«ã€ããŠè©³ããèŠãŠããåã«ããŸãCSSãµãã°ãªãããç°¡åã«å®çŸ©ããŸãããããµãã°ãªãããšã¯ãåºæ¬çã«èŠªã°ãªããå ã®ã°ãªããã¢ã€ãã ã«å®£èšãããã°ãªããã®ããšã§ããéåžžã®ãã¹ããããã°ãªãããšãµãã°ãªããã®äž»ãªéãã¯ããµãã°ãªããã芪ã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ïŒè¡ãšåïŒã䜿çšã§ããç¹ã«ãããŸããããã«ããããµãã°ãªããã®ãã©ãã¯ã芪ã°ãªãããšæŽåããå¿çããããšã§ãäžè²«æ§ã®ããäºæž¬å¯èœãªã¬ã€ã¢ãŠããäœæãããŸãã
ãã倧ããªã°ãªããäžã®ä»ã®ã«ãŒããšäžè²«ããé 眮ãä¿ã€å¿ èŠãããã«ãŒãã³ã³ããŒãã³ããèããŠã¿ãŸãããããµãã°ãªããã䜿çšãããšãã«ãŒãã®ã³ã³ãã³ãã«é¢ä¿ãªããã«ãŒãã®å éšèŠçŽ ãå€éšã°ãªããã®åãè¡ãšå®å šã«æŽåãããããšãã§ããŸãã
å¶çŽã®äŒæïŒãµãã°ãªããããã©ãã¯ãµã€ãžã³ã°ãç¶æ¿ããä»çµã¿
å¶çŽã®äŒæã¯ããµãã°ãªããã芪ã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ãç¶æ¿ããã¡ã«ããºã ã§ããgrid-template-rows: subgrid;
ãŸã㯠grid-template-columns: subgrid;
ïŒãããã¯äž¡æ¹ïŒã宣èšãããšããµãã°ãªããã«å¯ŸããŠèŠªã°ãªããã®å¯Ÿå¿ãããã©ãã¯ã䜿çšããããæç€ºããããšã«ãªããŸããããã«ããããµãã°ãªããã¯èŠªã®ã°ãªãããã©ãã¯ãµã€ãžã³ã°ã¢ã«ãŽãªãºã ã«åå ããŸãã
å¶çŽã®äŒæãã©ã®ããã«æ©èœãããã®å èš³ã¯æ¬¡ã®ãšããã§ãïŒ
- 宣èšïŒ 芪ã°ãªãããç¹å®ã®è¡ãšåã®ãã©ãã¯ãµã€ãºïŒäŸïŒ
fr
åäœãåºå®ãã¯ã»ã«å€ããŸãã¯auto
ïŒã§å®çŸ©ããŸãã - ã°ãªããã¢ã€ãã ããµãã°ãªããã«ãªãïŒ èŠªã°ãªããå
ã®ã°ãªããã¢ã€ãã ãéžæãã
grid-template-rows: subgrid;
ãgrid-template-columns: subgrid;
ã䜿çšããŠãµãã°ãªãããšããŠå®£èšããŸãã - ç¶æ¿ïŒ ãµãã°ãªããã¯ã
subgrid
ãæå®ããã軞ïŒè¡ãŸãã¯åïŒã«æ²¿ã£ãŠèŠªã°ãªããã®ãã©ãã¯å®çŸ©ãç¶æ¿ããŸãã - æŽåïŒ ãµãã°ãªããã®ã°ãªããã©ã€ã³ã¯ã芪ã°ãªããã®å¯Ÿå¿ããã°ãªããã©ã€ã³ãšæŽåããŸãã
- ã¬ã¹ãã³ã·ããªåäœïŒ 芪ã°ãªããã®ãµã€ãºã倿Žããããšããµãã°ãªããã¯èªåçã«ãã©ãã¯ãµã€ãºã調æŽããŠé 眮ãç¶æããã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããä¿èšŒããŸãã
äŸïŒ
次ã®HTMLæ§é ãèããŠã¿ãŸãããïŒ
<div class="container">
<div class="item">
<div class="subgrid">
<div>Item A</div>
<div>Item B</div>
<div>Item C</div>
</div>
</div>
<div class="item">...</div>
<div class="item">...</div>
</div>
ãããŠã次ã®CSSã§ãïŒ
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: auto auto;
gap: 10px;
}
.item {
background-color: #eee;
padding: 10px;
}
.subgrid {
display: grid;
grid-column: 1 / -1; /* Span all columns of the parent */
grid-template-columns: subgrid;
grid-template-rows: auto;
gap: 5px;
}
.subgrid > div {
background-color: #ddd;
padding: 5px;
}
ãã®äŸã§ã¯ã.subgrid
èŠçŽ ã¯.container
ããåã®ãã©ãã¯ãµã€ãžã³ã°ãç¶æ¿ããŸãããµãã°ãªããå
ã®ã¢ã€ãã ïŒItem AãItem BãItem CïŒã¯ã芪ã°ãªããã®åãšèªåçã«æŽåããŸãã芪ã°ãªããã®åãµã€ãºã倿Žããããšããµãã°ãªãããããã«å¿ããŠèª¿æŽãããŸãã
ãã¹ããããã°ãªããã®äŸåé¢ä¿ïŒãµãã°ãªããå ã®ãµãã°ãªããããããã課é¡
ãµãã°ãªããã¯åŒ·åã§ãããæ·±ããã¹ããããšè€éããæœåšçãªäŸåé¢ä¿ã®åé¡ãçããå¯èœæ§ããããŸãããã¹ããããã°ãªããã®äŸåé¢ä¿ã¯ããããµãã°ãªãããå¥ã®ãµãã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ã«äŸåãããã®ãµãã°ãªãããããã«èŠªã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ã«äŸåããå Žåã«çºçããŸããããã«ããã管çãé£ããäŸåé¢ä¿ã®é£éãçãŸããŸãã
ãã¹ãããããµãã°ãªããã®äž»ãªèª²é¡ã¯ã芪ã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ã®å€æŽããã¹ãŠã®åå«ãµãã°ãªããã«é£éçãªåœ±é¿ãäžããå¯èœæ§ãããããšã§ããæ éã«èšç»ããªããšãäºæãã¬ã¬ã€ã¢ãŠãã®ãããçãããããã°ãããå°é£ã«ãªãããšããããŸãã
ãã¹ãããããµãã°ãªããã®äŸåé¢ä¿ã®äŸïŒ
<div class="container">
<div class="item">
<div class="subgrid-level-1">
<div class="subgrid-level-2">
<div>Item 1</div>
<div>Item 2</div>
</div>
</div>
</div>
</div>
.container {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 10px;
}
.item {
display: grid;
grid-template-rows: auto;
}
.subgrid-level-1 {
display: grid;
grid-template-columns: subgrid;
grid-template-rows: 1fr;
}
.subgrid-level-2 {
display: grid;
grid-template-columns: subgrid;
grid-template-rows: 1fr;
}
ãã®ã·ããªãªã§ã¯ã.subgrid-level-2
ã¯.subgrid-level-1
ã®åãã©ãã¯ãµã€ãžã³ã°ã«äŸåãã.subgrid-level-1
ã¯.container
ã®åãã©ãã¯ãµã€ãžã³ã°ã«äŸåããŸãã.container
ã®grid-template-columns
ã倿Žãããšãäž¡æ¹ã®ãµãã°ãªããã圱é¿ãåããŸãã
ãã¹ããããã°ãªããã®äŸåé¢ä¿ã®åé¡ã軜æžããæ¹æ³
ãã¹ããããã°ãªããã®äŸåé¢ä¿ã«é¢é£ãã課é¡ã軜æžããããã®ããã€ãã®æŠç¥ã以äžã«ç€ºããŸãïŒ
- ãã¹ãã®æ·±ããå¶éããïŒ å¯èœãªéãæ·±ããã¹ãããããµãã°ãªãããé¿ããŠãã ãããã°ãªããå ã®ããã·ã³ãã«ãªã³ã³ããŒãã³ãã«ã¯ãéåžžã®ãã¹ããããã°ãªãããFlexboxã䜿çšãããªã©ã代æ¿ã®ã¬ã€ã¢ãŠãã¢ãããŒããæ€èšããŠãã ãããæ·±ããã¹ãã¯è€éããå¢ããã¬ã€ã¢ãŠãã«ã€ããŠèå¯ããã®ãé£ããããŸãã
- é©åãªå Žæã§æç€ºçãªãã©ãã¯ãµã€ãžã³ã°ã䜿çšããïŒ å Žåã«ãã£ãŠã¯ããµãã°ãªããå ã§ãã©ãã¯ãµã€ãºãæç€ºçã«å®çŸ©ããããšã§ã芪ã°ãªããã®ãã©ãã¯ãµã€ãžã³ã°ããåãé¢ãããšãã§ããŸããããã¯ã芪ã°ãªãããšã®å³å¯ãªé 眮ãå¿ èŠãšããªãã³ã³ããŒãã³ãã«åœ¹ç«ã¡ãŸãããã ãã芪ã®ãã©ãã¯ãµã€ãžã³ã°ããéžè±ããå Žåã¯ãäžè²«ãããã¶ã€ã³ã·ã¹ãã ãç¶æããããã«æ³šæããŠãã ããã
- CSS倿°ïŒã«ã¹ã¿ã ããããã£ïŒã掻çšããïŒ CSS倿°ã䜿çšããŠããé«ãã¬ãã«ïŒäŸïŒ
:root
ã»ã¬ã¯ã¿å ïŒã§ãã©ãã¯ãµã€ãºãå®çŸ©ãã芪ã°ãªãããšãµãã°ãªããã®äž¡æ¹ã§ãããã®å€æ°ãåç §ããŸããããã«ãããäžç®æãããã©ãã¯ãµã€ãžã³ã°ãå¶åŸ¡ã§ããäžè²«æ§ãä¿ã¡ããããªããŸãã - 培åºçãªãã¹ãïŒ ããŸããŸãªç»é¢ãµã€ãºããã©ãŠã¶ã§ã¬ã€ã¢ãŠããåºç¯å²ã«ãã¹ããããã¹ããããã°ãªããã®äŸåé¢ä¿ã«ãã£ãŠåŒãèµ·ããããäºæãã¬ã¬ã€ã¢ãŠãã®åé¡ãç¹å®ããŠè§£æ±ºããŸãããšããžã±ãŒã¹ãã³ã³ãã³ãã®ããªãšãŒã·ã§ã³ã«ã¯ç¹ã«æ³šæãæã£ãŠãã ããã
- CSSã°ãªããã€ã³ã¹ãã¯ã¿ãŒããŒã«ïŒ ãã©ãŠã¶ã®éçºè ããŒã«ïŒCSSã°ãªããã€ã³ã¹ãã¯ã¿ãŒãªã©ïŒãå©çšããŠãã°ãªããæ§é ãèŠèŠåããé 眮ããµã€ãžã³ã°ã®åé¡ãç¹å®ããŸãããããã®ããŒã«ã¯ããµãã°ãªããã芪ã°ãªãããšã©ã®ããã«çžäºäœçšããŠããããçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
- ã³ã³ããã¯ãšãªãæ€èšããïŒå©çšå¯èœãªå ŽåïŒïŒ ã³ã³ããã¯ãšãªã®ãµããŒããåºããã«ã€ããŠãç¹å®ã®ã·ããªãªã§ãµãã°ãªããã®ä»£æ¿ææ®µãšãªãå¯èœæ§ããããŸããã³ã³ããã¯ãšãªã䜿çšãããšããã¥ãŒããŒãã§ã¯ãªããèŠçŽ ãå«ãã³ã³ããã®ãµã€ãºã«åºã¥ããŠèŠçŽ ãã¹ã¿ã€ãªã³ã°ã§ãããããè€éãªãã¹ããããã°ãªããæ§é ã®å¿ èŠæ§ãæžããããšãã§ããŸãã
- è€éãªã¬ã€ã¢ãŠããåå²ããïŒ è€éãªãã¹ããããã°ãªããã®äŸåé¢ä¿ã«èŠåŽããŠããå Žåã¯ãã¬ã€ã¢ãŠããããå°ãã管çããããã³ã³ããŒãã³ãã«åå²ããããšãæ€èšããŠãã ãããããã«ãããä¿å®æ§ãåäžããäºæãã¬ã¬ã€ã¢ãŠãã®åé¡ã®ãªã¹ã¯ã軜æžãããŸãã
å®è·µçãªäŸãšãŠãŒã¹ã±ãŒã¹
ãµãã°ãªããã¯ãããŒãžã®ç°ãªãã»ã¯ã·ã§ã³éã§ããŸãã¯è€éãªã³ã³ããŒãã³ãå ã§èŠçŽ ãæŽåãããå¿ èŠãããã·ããªãªã§ç¹ã«åœ¹ç«ã¡ãŸãã以äžã«ããã€ãã®å®è·µçãªäŸã瀺ããŸãïŒ
- ãã©ãŒã ã¬ã€ã¢ãŠãïŒ è€æ°ã®è¡ãšåã«ããã£ãŠãã©ãŒã ã®ã©ãã«ãšå ¥åãã£ãŒã«ããäžè²«ããŠæŽåãããŸãããµãã°ãªããã¯ãã©ãã«ã®é·ãã«ããããããã©ãã«ãšå ¥åãã£ãŒã«ããå®å šã«æŽåããããšãä¿èšŒããŸãã
- ã«ãŒãã³ã³ããŒãã³ãïŒ ã³ã³ãã³ããå€åããŠããèŠåºããç»åãã³ã³ãã³ãã®é 眮ãäžè²«ããã«ãŒãã³ã³ããŒãã³ããäœæããŸãããµãã°ãªããã䜿çšãããšãã«ãŒãå ã®èŠçŽ ãããŒãžã®å šäœçãªã°ãªããæ§é ã«åãããŠæŽåãããããšãã§ããŸãã
- äŸ¡æ Œè¡šïŒ äŸ¡æ Œè¡šã®åããããŒãšããŒã¿ã»ã«ãæŽåãããã¯ãªãŒã³ã§ãããã§ãã·ã§ãã«ãªå€èгãä¿èšŒããŸãããµãã°ãªããã¯ãã»ã«å ã®ããã¹ãéãç°ãªã£ãŠãå®å šãªé 眮ãç¶æã§ããŸãã
- ç»åã®ã£ã©ãªãŒïŒ ããŸããŸãªãµã€ãºã®ç»åãã°ãªããã¬ã€ã¢ãŠãå ã§å®å šã«æŽåããç»åã®ã£ã©ãªãŒãäœæããŸãããµãã°ãªããã¯ãç»åã®å¯žæ³ã«é¢ä¿ãªããäžè²«ããã¢ã¹ãã¯ãæ¯ãšé 眮ãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
- ã«ã¬ã³ããŒãã¥ãŒïŒ ã«ã¬ã³ããŒãã¥ãŒã§ææ¥ãšæ¥ä»ãæŽåãããèŠèŠçã«é åçã§äœ¿ããããã€ã³ã¿ãŒãã§ãŒã¹ãä¿èšŒããŸãã
äŸïŒãµãã°ãªããã䜿çšãããã©ãŒã ã¬ã€ã¢ãŠã
以äžã¯ããµãã°ãªããã䜿çšããŠãã©ãã«ãšå ¥åãã£ãŒã«ããå®å šã«æŽåãããã©ãŒã ã¬ã€ã¢ãŠããäœæããæ¹æ³ã®äŸã§ãïŒ
<form class="form-grid">
<div class="form-row">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
</div>
<div class="form-row">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
</div>
<div class="form-row">
<label for="message">Message:</label>
<textarea id="message" name="message"></textarea>
</div>
</form>
.form-grid {
display: grid;
grid-template-columns: 1fr 2fr; /* Define two columns: label and input */
gap: 10px;
}
.form-row {
display: grid;
grid-template-columns: subgrid; /* Inherit column track sizing from the parent */
gap: 5px;
}
label {
text-align: right;
}
ãã®äŸã§ã¯ã.form-row
èŠçŽ ã.form-grid
èŠçŽ ããåã®ãã©ãã¯ãµã€ãžã³ã°ãç¶æ¿ããŸããããã«ããããã©ãŒã ã®ãã¹ãŠã®è¡ã§ã©ãã«ãšå
¥åãã£ãŒã«ããå®å
šã«æŽåããããšãä¿èšŒãããŸãã
ãã©ãŠã¶ã®ãµããŒãç¶æ³
CSSãµãã°ãªããã®ãã©ãŠã¶ãµããŒãã¯ãChromeãFirefoxãSafariãEdgeãªã©ã®çŸä»£ã®ãã©ãŠã¶ã§ã¯äžè¬çã«è¯å¥œã§ãããã ããã¿ãŒã²ãããªãŒãã£ãšã³ã¹ãååãªãã©ãŠã¶ãµããŒããæã£ãŠããããšã確èªããããã«ãCan I UseïŒhttps://caniuse.com/css-subgridïŒã§äºææ§ã確èªããããšãäžå¯æ¬ ã§ããå€ããã©ãŠã¶ããµããŒãããå¿ èŠãããå Žåã¯ãããªãã£ã«ã代æ¿ã®ã¬ã€ã¢ãŠãæè¡ã®äœ¿çšãæ€èšããŠãã ããã
çµè«
CSSãµãã°ãªããã¯ã芪ã°ãªãããšåã°ãªããéã§ãã©ãã¯å®çŸ©ãå ±æããè€éã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããäœæããããã®åŒ·åãªããŒã«ã§ããå¶çŽã®äŒæãšãã¹ããããã°ãªããã®äŸåé¢ä¿ã®æœåšçãªèª²é¡ãçè§£ããããšã¯ããã®é«åºŠãªCSSã¬ã€ã¢ãŠãæè¡ãç¿åŸããããã«äžå¯æ¬ ã§ãããã®ã¬ã€ãã§æŠèª¬ããæŠç¥ã«åŸãããšã§ããµãã°ãªããã广çã«æŽ»çšããŠãå ç¢ã§ä¿å®æ§ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
ãã¹ãããããµãã°ãªããã¯èª²é¡ãããããå¯èœæ§ããããŸãããææ ®æ·±ãã¢ãããŒããšå¶çŽã®äŒæã«ã€ããŠã®ååãªçè§£ãããã°ããµãã°ãªããã广çã«æŽ»çšã§ããŸãããã¹ãã®æ·±ããæå°éã«æããCSS倿°ã掻çšãã培åºçã«ãã¹ãããããšã§ãã¬ã€ã¢ãŠããããŸããŸãªããã€ã¹ãç»é¢ãµã€ãºã§ä¿å®å¯èœãã€ã¬ã¹ãã³ã·ãã§ããç¶ããããšãä¿èšŒã§ããŸãã