CSSã®`grid-template-areas`ãã¢ãã¡ãŒã·ã§ã³ãããåãçºèŠããŸãããããã®å æ¬çãªã¬ã€ãã§ã¯ãå®çšçãªäŸãšãã¹ããã©ã¯ãã£ã¹ãçšããŠãã¹ã ãŒãºã§ã¬ã¹ãã³ã·ãããããŠä¿å®ããããã¬ã€ã¢ãŠãé·ç§»ãäœæããæ¹æ³ã玹ä»ããŸãã
CSSã°ãªããååä»ããšãªã¢ã¢ãã¡ãŒã·ã§ã³ïŒã¹ã ãŒãºãªã¬ã€ã¢ãŠãé·ç§»ã®ããã®ã¬ã€ã
é·å¹ŽãWebéçºè ãã¡ã¯ã¬ã€ã¢ãŠãã¢ãã¡ãŒã·ã§ã³ã®èæ¯ãè¿œãæ±ããŠããŸãããããã¯ãããŒãžå šäœã®æ§é ãããç¶æ ããå¥ã®ç¶æ ãžã¹ã ãŒãºã«é·ç§»ããããã·ã³ãã«ã§ããã©ãŒãã³ã¹ãé«ããCSSãã€ãã£ããªæ¹æ³ã§ããç§ãã¡ã¯ãããžã·ã§ãã³ã°ã«ããå·§åŠãªããã¯ãFlexboxã«ããè€éãªèšç®ããããŠåŒ·åã§ããéãJavaScriptã©ã€ãã©ãªã䜿çšããŠããŸããããããã®æ¹æ³ã¯æ©èœãããã®ã®ãè€éããä¿å®æ§ããŸãã¯ããã©ãŒãã³ã¹ã«ãããŠç ç²ã䌎ãããšããããããŸããã
çŸä»£ã®CSSã°ãªããã¬ã€ã¢ãŠãã®åŒ·åãªæ©èœãç»å ŽããŸãããããã¯ãgrid-template-areasããããã£ãã¢ãã¡ãŒã·ã§ã³ãããèœåã§ãããã®å®£èšçãªã¢ãããŒãã«ãããååä»ããšãªã¢ã§ã¬ã€ã¢ãŠãæ§é å šäœãå®çŸ©ãããã£ã1è¡ã®CSSã§ããããé·ç§»ãããããšãã§ããŸãããã®çµæãä¿¡ããããªãã»ã©ã¹ã ãŒãºã§ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãããã¢ãã¡ãŒã·ã§ã³ãå®çŸããèšè¿°ãç°¡åã§ãé©ãã»ã©ä¿å®ã容æã«ãªããŸãã
ãã®å æ¬çãªã¬ã€ãã§ã¯ãCSSã°ãªããååä»ããšãªã¢ã®åºæ¬ãããæŽç·Žãããã€ã³ã¿ã©ã¯ãã£ãã§ã¢ã¯ã»ã¹ããããã¬ã€ã¢ãŠãé·ç§»ãäœæããããã®é«åºŠãªãã¯ããã¯ãŸã§ã解説ããŸããåçãªããã·ã¥ããŒããã€ã³ã¿ã©ã¯ãã£ããªèšäºãã¬ã¹ãã³ã·ããªeã³ããŒã¹ãµã€ããæ§ç¯ããŠãããã©ããã«ãããããããã®ãã¯ããã¯ã¯ããªãã®ããã³ããšã³ãããŒã«ãããã«ãããŠäžå¯æ¬ ãªããŒã«ãšãªãã§ãããã
ããããïŒCSSã°ãªãããšååä»ããšãªã¢
ã¢ãã¡ãŒã·ã§ã³ã«å ¥ãåã«ããã£ãããšããåºç€ãç¯ããŸããããCSSã°ãªãããš`grid-template-areas`ã«ãã§ã«ç²ŸéããŠããå Žåã¯ã次ã®ã»ã¯ã·ã§ã³ã«é²ãã§ãã ãããããã§ãªãå Žåã¯ããã®ç°¡åãªåŸ©ç¿ã§ç¥èãç¿åŸã§ããŸãã
CSSã°ãªãããšã¯ïŒ
CSSã°ãªããã¬ã€ã¢ãŠãã¯ãWebçšã®2次å ã¬ã€ã¢ãŠãã·ã¹ãã ã§ããããã«ãããããŒãžèŠçŽ ã®ãµã€ãºèšå®ãé 眮ãã¬ã€ã€ãŒããè¡ãšåã®äž¡æ¹ã§åæã«å¶åŸ¡ã§ããŸããäž»ã«1次å ã·ã¹ãã ïŒè¡ãŸãã¯åã®ããããïŒã§ããFlexboxãšã¯ç°ãªããã°ãªããã¯ããŒãžå šäœãŸãã¯ã³ã³ããŒãã³ãæ§é ã®ç®¡çã«åªããŠããŸãã
`grid-template-areas`ã®å
CSSã°ãªããã®æãçŽæçãªæ©èœã®1ã€ãã`grid-template-areas`ããããã£ã§ããããã«ãããååä»ãæååã䜿çšããŠãCSSå ã§ã¬ã€ã¢ãŠãã®èŠèŠçãªè¡šçŸãçŽæ¥äœæã§ããŸããããã«ãããã¬ã€ã¢ãŠãã³ãŒãã¯éåžžã«èªã¿ããããçè§£ãããããªããŸãã
åäœã¯æ¬¡ã®ãšããã§ãã
- ã°ãªããã³ã³ãããå®çŸ©ããïŒèŠªèŠçŽ ã«`display: grid;`ãé©çšããŸãã
- åèŠçŽ ã«ååãä»ããïŒ`grid-area`ããããã£ïŒäŸïŒ`grid-area: header;`ïŒã䜿çšããŠãååèŠçŽ ã«ååãå²ãåœãŠãŸãã
- ã¬ã€ã¢ãŠããæç»ããïŒã°ãªããã³ã³ããã§ã`grid-template-areas`ããããã£ã䜿çšããŠååä»ããšãªã¢ãé 眮ããŸããåæååã¯è¡ã衚ããæååå ã®ååãåãå®çŸ©ããŸããããªãªãïŒ`.`ïŒã¯ç©ºã®ã°ãªããã»ã«ã瀺ãããã«äœ¿çšã§ããŸãã
å€å žçãªWebããŒãžã¬ã€ã¢ãŠãã®ã·ã³ãã«ãªéçäŸãèŠãŠã¿ãŸãããã
HTMLæ§é ïŒ
<div class="app-layout">
<header class="app-header">Header</header>
<nav class="app-sidebar">Sidebar</nav>
<main class="app-main">Main Content</main>
<footer class="app-footer">Footer</footer>
</div>
CSSå®è£ ïŒ
/* 1. ã°ãªããã¢ã€ãã ã«ååãå²ãåœãŠã */
.app-header { grid-area: header; }
.app-sidebar { grid-area: sidebar; }
.app-main { grid-area: main; }
.app-footer { grid-area: footer; }
/* 2. ã°ãªããã³ã³ãããå®çŸ©ããã¬ã€ã¢ãŠããæç»ãã */
.app-layout {
display: grid;
grid-template-columns: 250px 1fr;
grid-template-rows: auto 1fr auto;
height: 100vh;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
ãã®äŸã§ã¯ã`grid-template-areas`ããããã£ãã¬ã€ã¢ãŠãã®å³åº§ã®èŠèŠçãªããããæäŸããŸããããããŒãšããã¿ãŒã¯äž¡æ¹ã®åã«ãŸãããããµã€ãããŒãšã¡ã€ã³ã³ã³ãã³ãã¯äžå€®ã®è¡ãå ±æããŸããããã¯ã¯ãªãŒã³ã§å®£èšçã§ãããè€éãªfloatãflexboxã®èšå®ãããã¯ããã«çè§£ããããã§ãã
æ žå¿ã³ã³ã»ããïŒ`grid-template-areas`ã®ã¢ãã¡ãŒã·ã§ã³å
ããŠããããããé¢çœãéšåã§ããé·ãéã`grid-template-areas`ã®ãããªé¢æ£çãªããããã£ã¯ã¢ãã¡ãŒã·ã§ã³ã§ããŸããã§ãããã¬ã€ã¢ãŠãã倿Žããããšã¯ã§ããŸããããããç¶æ ããæ¬¡ã®ç¶æ ãžãšç¬æã«åãæ¿ããã ãã§ãããããããããã¯ãã¹ãŠã®ã¢ãã³ãã©ãŠã¶ã§å€æŽãããæ°ããªå¯èœæ§ã®äžçãéãããŸããã
`grid-template-areas`ã¯æ¬åœã«ã¢ãã¡ãŒã·ã§ã³å¯èœã§ããïŒ
ã¯ããããã§ãïŒChromeãFirefoxãSafariãEdgeã®å®è£ ã§ã¯ã`grid-template-areas`ïŒ`grid-template-columns`ããã³`grid-template-rows`ãšå ±ã«ïŒã¯ã¢ãã¡ãŒã·ã§ã³å¯èœãªããããã£ã§ãããã©ãŠã¶ã¯çŸåšã2ã€ã®ç°ãªãã°ãªããæ§é éãè£éããæå®ãããæéã«ããã£ãŠã°ãªãããšãªã¢ãã¹ã ãŒãºã«ç§»åããã³ãµã€ãºå€æŽã§ããŸãã
èŠããŠããã¹ãéèŠãªã«ãŒã«ã1ã€ãããŸãïŒååä»ããšãªã¢ã®ã»ããã¯ãéå§ç¶æ ãšçµäºç¶æ ã®éã§åäžã§ãªããã°ãªããŸãããé·ç§»äžã«ååä»ããšãªã¢ã远å ãŸãã¯åé€ããããšã¯ã§ããŸãããããšãã°ããšãªã¢`A`ã`B`ã`C`ãæã€ã¬ã€ã¢ãŠãããã`A`ãš`B`ã®ã¿ãæã€ã¬ã€ã¢ãŠãã«é·ç§»ããããšã¯ã§ããŸããããã ãã`A`ã`B`ã`C`ã奜ããªããã«åé 眮ããããç°ãªãæ°ã®è¡ãšåã«ãŸããããããããããšã¯ã§ããŸãã
ãã©ã³ãžã·ã§ã³ã®èšå®
éæ³ã¯æšæºã®CSS `transition`ããããã£ã§èµ·ãããŸãã`grid-template-areas`ã®å€æŽãç£èŠãããããã®å€æŽãæéãšãšãã«ã¢ãã¡ãŒã·ã§ã³ããããã«ãã©ãŠã¶ã«æç€ºããã ãã§ãã
ã°ãªããã³ã³ããã«ã次ã远å ããŸãïŒ
CSSïŒ
.grid-container {
/* ... ãã®ä»ã®ã°ãªãããããã㣠... */
transition: grid-template-areas 0.5s ease-in-out;
}
ããã詳ããèŠãŠã¿ãŸãããïŒ
- `grid-template-areas`: ã¢ãã¡ãŒã·ã§ã³ããããç¹å®ã®ããããã£ã
- `0.5s`: ã¢ãã¡ãŒã·ã§ã³ã®æç¶æéïŒ0.5ç§ïŒã
- `ease-in-out`: ã¢ãã¡ãŒã·ã§ã³ã®å éãšæžéãå¶åŸ¡ããããèªç¶ãªæãã«ããã¿ã€ãã³ã°é¢æ°ã
ãã®1è¡ã®ã³ãŒãã«ããããã®èŠçŽ ã®`grid-template-areas`ããããã£ãžã®å€æŽïŒäŸãã°ãã¯ã©ã¹ã®è¿œå ã`:hover`ç¶æ ã«ãããã®ïŒã¯ãã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ãããªã¬ãŒããããã«ãªããŸãã
å®äŸïŒã¬ã€ã¢ãŠãã«åœãå¹ã蟌ã
çè«ã¯çŽ æŽãããã§ããããã®ãã¯ããã¯ãå®éã«èŠãŠã¿ãŸããããããã§ã¯ãååä»ãã°ãªãããšãªã¢ãã¢ãã¡ãŒã·ã§ã³ãããåãšå€æ§æ§ã瀺ãããã€ãã®å®äŸã玹ä»ããŸãã
äŸ1ïŒããã©ãŒã«ã¹ã¢ãŒããããã·ã¥ããŒã
è€æ°ã®ããã«ãæã€ããã·ã¥ããŒãã¢ããªã±ãŒã·ã§ã³ãæ³åããŠã¿ãŠãã ãããããã©ãŒã«ã¹ã¢ãŒãããå®è£ ããããšèããŠããŸããããã¯ãã¡ã€ã³ã³ã³ãã³ãé åãç»é¢ã®ã»ãšãã©ãå ããããã«æ¡å€§ãããµã€ãããŒãšè¿œå ã®ããã«ãçž®å°ãŸãã¯èã«ç§»åããã¢ãŒãã§ãã
HTMLæ§é ïŒ
<div class="dashboard">
<div class="panel-header">Header</div>
<div class="panel-nav">Nav</div>
<div class="panel-main">
Main Content
<button id="toggle-focus">Toggle Focus Mode</button>
</div>
<div class="panel-extra">Extra Info</div>
</div>
CSSå®è£ ïŒ
/* ã°ãªããã¢ã€ãã ã«ååãä»ãã */
.panel-header { grid-area: header; }
.panel-nav { grid-area: nav; }
.panel-main { grid-area: main; }
.panel-extra { grid-area: extra; }
/* ã³ã³ãããšãã©ã³ãžã·ã§ã³ãå®çŸ©ãã */
.dashboard {
display: grid;
height: 100vh;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: 60px 1fr;
transition: grid-template-areas 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55),
grid-template-columns 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55);
/* ããã©ã«ãã¬ã€ã¢ãŠãç¶æ
*/
grid-template-areas:
"header header header"
"nav main extra";
}
/* ãã©ãŒã«ã¹ã¢ãŒãã¬ã€ã¢ãŠãç¶æ
ïŒã¯ã©ã¹ã«ãã£ãŠããªã¬ãŒãããïŒ */
.dashboard.focus-mode {
grid-template-columns: 60px 1fr 60px; /* åã®ãµã€ãºãã¢ãã¡ãŒã·ã§ã³ïŒ */
grid-template-areas:
"header header header"
"nav main main"; /* ã¡ã€ã³ã³ã³ãã³ãã远å åã®ã¹ããŒã¹ãå ãã */
}
ãã®äŸã§ã¯ã`.dashboard`ã³ã³ããã«`.focus-mode`ã¯ã©ã¹ã远å ããããšïŒãã¿ã³ã¯ãªãã¯ãåŠçããããã®å°ãã®JavaScriptã䜿çšïŒã2ã€ã®ããšãåæã«èµ·ãããŸãïŒ`grid-template-columns`ããµã€ãããã«ãçž®å°ããããã«å€åãã`grid-template-areas`ã`main`ãšãªã¢ã以å`extra`ããã«ãå ããŠããã¹ããŒã¹ã«åºããããã«å€åããŸããäž¡æ¹ã®ããããã£ã`transition`宣èšã«å«ãŸããŠãããããã¬ã€ã¢ãŠãå šäœãæ°ããç¶æ ãžãšæµããããã«å€åããŸãã
äŸ2ïŒã¬ã¹ãã³ã·ããªã¹ããŒãªãŒããªã³ã°ã¬ã€ã¢ãŠã
ãã®ãã¯ããã¯ã¯ãèšäºã®ããã®åçãªéèªã®ãããªã¬ã€ã¢ãŠããäœæããã®ã«æé©ã§ãããŠãŒã¶ãŒã®æäœããã¥ãŒããŒãã®å€åã«å¿ããŠãããã¹ããšç»åã®é¢ä¿ã倿Žã§ããŸãã
䞊åãã¥ãŒãšãã«ããªãŒãç»åãã¥ãŒãåãæ¿ããããã¬ã€ã¢ãŠããäœæããŸãããã
HTMLæ§é ïŒ
<article class="story-layout">
<div class="story-text">...é·ã圢åŒã®ããã¹ã...</div>
<figure class="story-image">...ç»å...</figure>
</article>
CSSå®è£ ïŒ
.story-text { grid-area: text; }
.story-image { grid-area: image; }
.story-layout {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto;
gap: 2rem;
transition: grid-template-areas 0.7s ease-out;
/* ããã©ã«ãç¶æ
ïŒäžŠå */
grid-template-areas: "text image";
}
/* ãã«ããªãŒãç¶æ
*/
.story-layout.full-bleed {
grid-template-areas: "image image" "text text"; /* ç»åãäžéšã«ç§»åããå
šå¹
ã«åºãã */
}
`.full-bleed`ã¯ã©ã¹ãåãæ¿ããããšã§ãç»åã¯ã¹ã ãŒãºã«åŽé¢ããäžéšã«ç§»åããå šå¹ ã«æ¡å€§ããŸããåæã«ããã¹ãã¯ãã®äžã«ã¹ã ãŒãºã«ãªãããŒããŸããããã«ããã匷åãªç©èªå¹æãçãŸãããã¶ã€ã³ãç°ãªãã¿ã€ãã³ã°ã§ç°ãªãã³ã³ãã³ãã匷調ããããšãã§ããŸãã
äŸ3ïŒåçãªeã³ããŒã¹è£œåããŒãž
補åããŒãžã§ã¯ãã¡ã€ã³ç»åãšãµã ãã€ã«ã®ã®ã£ã©ãªãŒããããããŸããã°ãªãããšãªã¢ã¢ãã¡ãŒã·ã§ã³ã䜿çšããŠããµã ãã€ã«ãã¯ãªãã¯ãããšããŒãžãåé 眮ããããã®ç»åãé¢é£ã³ã³ãã³ããåé¢ã«è¡šç€ºããããããªæ»ãããªã€ã³ã¿ã©ã¯ã·ã§ã³ãäœæã§ããŸãã
補åç»åã説æãããã³ãæ©èœãã³ãŒã«ã¢ãŠãã®ã»ãããå«ãã¬ã€ã¢ãŠããæ³åããŠã¿ãŠãã ãããåæ©èœã匷調ããããã«ãç°ãªãã¬ã€ã¢ãŠãç¶æ ãäœæã§ããŸãã
HTMLæ§é ïŒ
<div class="product-page default-view">
<div class="product-image">Image</div>
<div class="product-desc">Description</div>
<div class="product-feature1">Feature 1</div>
<div class="product-feature2"<Feature 2</div>
</div>
CSSå®è£ ïŒ
.product-image { grid-area: image; }
.product-desc { grid-area: desc; }
.product-feature1 { grid-area: f1; }
.product-feature2 { grid-area: f2; }
.product-page {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto auto;
transition: grid-template-areas 0.4s ease;
}
/* ããã©ã«ããã¥ãŒ */
.product-page.default-view {
grid-template-areas:
"image desc"
"f1 f2";
}
/* æ©èœ1ã«çŠç¹ãåœãŠã */
.product-page.feature1-view {
grid-template-areas:
"f1 f1"
"image desc";
}
/* æ©èœ2ã«çŠç¹ãåœãŠã */
.product-page.feature2-view {
grid-template-areas:
"f2 image"
"f2 desc";
}
ã³ã³ããã®ã¯ã©ã¹ïŒ`default-view`ã`feature1-view`ãªã©ïŒãåãæ¿ããç°¡åãªJavaScriptã䜿çšããããšã§ã補åã®æ©èœãã€ã³ã¿ã©ã¯ãã£ãã«ç޹ä»ãããã¢ãŒãäœæã§ããŸããã¬ã€ã¢ãŠãèªäœããŠãŒã¶ãŒã®æ³šæãåŒãããã«é©å¿ããŸããããã¯ãéçãªã«ã«ãŒã»ã«ãåçŽãªã³ã³ãã³ãã®ã¹ã¯ãããããã¯ããã«é åçã§ãã
é«åºŠãªãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹
åºæ¬ãç¿åŸãããããããã®ãã¹ããã©ã¯ãã£ã¹ãåãå ¥ããããšã§ãã¬ã€ã¢ãŠãã¢ãã¡ãŒã·ã§ã³ãããã«åäžãããããšãã§ããŸãã
ä»ã®ãã©ã³ãžã·ã§ã³ãšã®çµã¿åãã
ã¬ã€ã¢ãŠããã©ã³ãžã·ã§ã³ã¯ãä»ã®ã¢ãã¡ãŒã·ã§ã³ãšçµã¿åããããšããã«å¹æçã§ãã芪ã°ãªããã倿ŽãããŠããã®ãšåæã«ãåèŠçŽ ã®`background-color`ã`opacity`ã`transform`ãªã©ã®ããããã£ããã©ã³ãžã·ã§ã³ãããããšãã§ããŸãã
ããšãã°ãã¬ã€ã¢ãŠããããã©ãŒã«ã¹ã¢ãŒããã«ç§»è¡ããéãéèŠåºŠã®äœãèŠçŽ ã®`opacity`ãæžããããšã§ãã§ãŒãã¢ãŠããããããšãã§ããŸãïŒ
CSSïŒ
.dashboard.focus-mode .panel-nav,
.dashboard.focus-mode .panel-extra {
opacity: 0.5;
}
.panel-nav, .panel-extra {
transition: opacity 0.6s ease;
}
ããã«ãããè€æ°ã®èŠèŠçãªæãããã飿ºããŠæ©èœãããããè±ãã§å€å±€çãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãçãŸããŸãã
ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
`grid-template-areas`ã®ãããªã¬ã€ã¢ãŠãããããã£ã®ã¢ãã¡ãŒã·ã§ã³ã¯ã`transform`ã`opacity`ã®ã¢ãã¡ãŒã·ã§ã³ïŒãããã¯å€ãã®å ŽåGPUã«ãªãããŒãã§ããŸãïŒããããã©ãŠã¶ã«ãšã£ãŠèšç®ã³ã¹ããé«ããªããŸããã¢ãã³ãã©ãŠã¶ã¯é«åºŠã«æé©åãããŠããŸãããããã©ãŒãã³ã¹ã«çæããããšã¯è³¢æã§ãã
- 軜快ã«ä¿ã€ïŒã¢ãã¡ãŒã·ã§ã³ã®æç¶æéã¯çãïŒéåžž300msãã700msã®éïŒä¿ã¡ãŸããããé·ãã¬ã€ã¢ãŠãã¢ãã¡ãŒã·ã§ã³ã¯é ãæããããããšããããŸãã
- ã·ã³ãã«ãªã€ãŒãžã³ã°ïŒè€éãª`cubic-bezier`颿°ã¯çŸããã§ãããããå€ãã®åŠçãå¿ èŠãšããå ŽåããããŸãã`ease-out`ã®ãããªæšæºçãªã€ãŒãžã³ã°é¢æ°ã¯ãå€ãã®å Žåååã§ããã©ãŒãã³ã¹ãè¯å¥œã§ãã
- å®éã®ããã€ã¹ã§ãã¹ãããïŒãã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠã¹ã ãŒãºãªãšã¯ã¹ããªãšã³ã¹ãç¶æãããããã«ãåžžã«ããŸããŸãªããã€ã¹ãç¹ã«äœé»åã®æºåž¯é»è©±ã§ã¢ãã¡ãŒã·ã§ã³ããã¹ãããŠãã ããã
ã¢ã¯ã»ã·ããªãã£ã¯è²ããªã
åãã¯ãååºé害ãä¹ãç©é ãããã®ä»ã®èªç¥é害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠé倧ãªã¢ã¯ã»ã·ããªãã£ã®éå£ãšãªãå¯èœæ§ããããŸããã¢ãŒã·ã§ã³ãæžãããšãããŠãŒã¶ãŒã®å¥œã¿ãå°éããããšãéèŠã§ãã
`prefers-reduced-motion`ã¡ãã£ã¢ã¯ãšãªã䜿çšãããšããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãã®èšå®ãæå¹ã«ããŠãããŠãŒã¶ãŒåãã«ãã¢ãã¡ãŒã·ã§ã³ãç¡å¹ã«ããããããŒã³ããŠã³ãããã§ããŸãã
CSSïŒ
@media (prefers-reduced-motion: reduce) {
.grid-container, .grid-container * {
transition: none !important;
animation: none !important;
}
}
ãã®ã¡ãã£ã¢ã¯ãšãªã§ãã©ã³ãžã·ã§ã³å®£èšãã©ããããïŒãŸãã¯äžæžãããïŒããšã§ããã¹ãŠã®ãŠãŒã¶ãŒã«ããå®å šã§å¿«é©ãªãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããã¢ãã¡ãŒã·ã§ã³ã¯åŒ·åã§ãããå¿ é ã§ã¯ãªãããšãå¿ããªãã§ãã ããã
ãã©ãŠã¶ã®ãµããŒããšãã©ãŒã«ããã¯
`grid-template-areas`ã®ã¢ãã¡ãŒã·ã§ã³ã®ãµããŒãã¯ããã¹ãŠã®ã¢ãã³ãªåžžææŽæ°ããããã©ãŠã¶ã§åŒ·åã§ãããã ããææ°ã®äºææ§æ å ±ã«ã€ããŠã¯ããCan I Use...ãã®ãããªãªãœãŒã¹ãåç §ããããšããå§ãããŸãã
è¯ããã¥ãŒã¹ã¯ããã©ãŒã«ããã¯ã®åäœãåªããŠããããšã§ããã¢ãã¡ãŒã·ã§ã³ããµããŒãããªããã©ãŠã¶ã§ã¯ãã¬ã€ã¢ãŠãã¯éå§ç¶æ ããçµäºç¶æ ã«åçŽã«åãæ¿ããã ãã§ããæ©èœã¯å®å šã«ä¿æãããçŸçãªè£ é£Ÿãæ¬ ããŠããã ãã§ããããã¯ãã°ã¬ãŒã¹ãã«ãã°ã©ããŒã·ã§ã³ã®å®ç§ãªäŸã§ãã
å¶éäºé ãšä»ã®ããŒã«ã®äœ¿çšææ
匷åã§ã¯ãããŸããã`grid-template-areas`ã®ã¢ãã¡ãŒã·ã§ã³ã¯äžèœè¬ã§ã¯ãããŸããããã®å¶éãçè§£ããããšãéèŠã§ãã
- äžè²«ããååä»ããšãªã¢ïŒåè¿°ã®ãšãããäž»ãªå¶éã¯ã`grid-area`åã®ã»ãããéå§ç¶æ ãšçµäºç¶æ ã®äž¡æ¹ã§åäžã§ãªããã°ãªããªãããšã§ããã°ãªããã¢ã€ãã ã®è¿œå ãŸãã¯åé€ããããŒããã¢ãã¡ãŒã·ã§ã³ãããããšã¯ã§ããŸããã
- åå¥ã®ã¢ã€ãã å¶åŸ¡ãªãïŒãã®ãã¯ããã¯ã¯ãã°ãªããæ§é å šäœãäžåºŠã«ã¢ãã¡ãŒã·ã§ã³ãããŸããè€éãªãã¹ã«æ²¿ã£ãŠããŸã㯠staggered timing ã§åã ã®èŠçŽ ãã¢ãã¡ãŒã·ã§ã³ãããå¿ èŠãããå Žåã¯ãGreenSock Animation PlatformïŒGSAPïŒãWeb Animations APIãªã©ã®JavaScriptããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãããããã现ãããªå¶åŸ¡ãæäŸããŸãã
- ã³ã³ãã³ãã®ãªãããŒïŒã¬ã€ã¢ãŠãã®ã¢ãã¡ãŒã·ã§ã³ã¯ã³ã³ãã³ãã®ãªãããŒãåŒãèµ·ããå¯èœæ§ãããããšã«æ³šæããŠãã ãããããã¯æ éã«æ±ããªããšäžå¿«ã«æããããããšããããŸããã³ã³ãã³ããéå§ç¶æ ãçµäºç¶æ ãããã³ãã©ã³ãžã·ã§ã³äžã«é©åã«èŠããããšã確èªããŠãã ããã
çµè«ïŒWebã¬ã€ã¢ãŠãã®æ°æä»£
`grid-template-areas`ãã¢ãã¡ãŒã·ã§ã³ãããèœåã¯ãåãªãæ°ããCSSæ©èœã§ã¯ãããŸãããWebäžã§ã®ã€ã³ã¿ã©ã¯ãã£ããã¶ã€ã³ãžã®ã¢ãããŒãæ¹æ³ã«ãããæ ¹æ¬çãªå€åã衚ããŠããŸããããã«ãããã¬ã€ã¢ãŠããéçãªéåçãšããŠã§ã¯ãªãããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«æå³ã®ããæ¹æ³ã§å¿çã§ããåçã§æµåçãªã¡ãã£ã¢ãšããŠèããããšãã§ããããã«ãªããŸãã
ãã®å®£èšçã§ä¿å®ããããCSSãã€ãã£ããªãã¯ããã¯ã掻çšããããšã§ãæ©èœçã§ããã ãã§ãªããæ¥œããçŽæçã§ãããã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ã§ããŸãããŠãŒã¶ãŒã®æ³šæãåŒãã€ããç©èªã®æµããäœæããçãçããšãããšã¯ã¹ããªãšã³ã¹ãæ§ç¯ã§ããŸãããããå®éšãå§ããŠãé©ãã»ã©ã¹ã ãŒãºã«é·ç§»ããã¬ã€ã¢ãŠãããã²äœæããŠã¿ãŠãã ããã