ã°ãªããã使ç¨ããããããã¬ã¤ã¢ã¦ãã®å®ç¾
ä¸é£ã® CSS ã°ãªããã¬ã¤ã¢ã¦ãã¬ã¤ãã®ç· ããããã¨ãã¦ãã°ãªããã¬ã¤ã¢ã¦ãã使ã£ããã¶ã¤ã³ã®ãã¯ããã¯ãããã¤ãç´¹ä»ãã¾ããããã§ã¯ã grid-template-areas ã使ã£ãä¾ã¨ã 12 åã®å¯å¤ã°ãªããã·ã¹ãã ãããã¦èªåé
ç½®ã使ã£ãã¢ã¤ãã ãªã¹ããè¦ã¦ããã¾ãããããã®ä¾ãããããããã«ãå¤ãã®å ´åãã°ãªããã¬ã¤ã¢ã¦ãã§æãçµæãå¾ãããã«ã¯è¤æ°ã®æ¹æ³ãããã¾ããèªåã解決ãããã¨ãã¦ããåé¡ããå®ç¾ãããã¨ãã¦ãããã¶ã¤ã³ã«åããã¦ãæãåèã«ãªãæ¹æ³ãé¸ãã§ãã ããã
grid-template-areas ã使ç¨ããã1 ï½ 3 åã®æµåçãªã¬ã¹ãã³ã·ãã¬ã¤ã¢ã¦ã
å¤ãã®ã¦ã§ããµã¤ãã¯ãã®ç¨®ã®ã¬ã¤ã¢ã¦ãã®ããªã¨ã¼ã·ã§ã³ã§ãã³ã³ãã³ãããµã¤ããã¼ããããã¼ãããã¿ã¼ãåãã¦ãã¾ããã¬ã¹ãã³ã·ããã¶ã¤ã³ã§ã¯ã1 åã§è¡¨ç¤ºããç¹å®ã®ãã¬ã¤ã¯ãã¤ã³ãã§ãµã¤ããã¼ã追å ããåºãç»é¢ã§ã¯ 3 åã®ã¬ã¤ã¢ã¦ããæã£ã¦ããã¨ããæ¹æ³ãèãããã¾ãã

ãã®ã¬ã¤ã¢ã¦ãã¯ãã°ãªãããã³ãã¬ã¼ãé åã®ã¬ã¤ãã§å¦ãã ãååä»ããã³ãã¬ã¼ãé åãã使ã£ã¦ä½æããäºå®ã§ãã
ãã®ãã¼ã¯ã¢ããã¯ããããã¼ãããã¿ã¼ãã¡ã¤ã³ã³ã³ãã³ããããã²ã¼ã·ã§ã³ããµã¤ããã¼ãããã¦åºåãæ²è¼ããããã®ãããã¯ã®è¦ç´ ãå é¨ã«æã¤ã³ã³ããã¼ã§ãã
<div class="wrapper">
<header class="main-head">ãããã¼</header>
<nav class="main-nav">
<ul>
<li><a href="">ãã 1</a></li>
<li><a href="">ãã 2</a></li>
<li><a href="">ãã 3</a></li>
</ul>
</nav>
<article class="content">
<h1>ã¡ã¤ã³è¨äºé å</h1>
<p>
ãã®ã¬ã¤ã¢ã¦ãã§ã¯ãå¹
ã 500
ãã¯ã»ã«ä»¥ä¸ã®ç»é¢ã§ã¯ãé åãã½ã¼ã¹é ã«è¡¨ç¤ºãã¾ããã°ãªããã¨ã°ãªããä¸ã®ã¢ã¤ãã ã®é
ç½®ãåå®ç¾©ãããã¨ã§ã2
åã¬ã¤ã¢ã¦ãã3 åã¬ã¤ã¢ã¦ãã¸ã¨å¤åãã¦ããã¾ãã
</p>
</article>
<aside class="side">ãµã¤ããã¼</aside>
<div class="ad">åºå</div>
<footer class="main-footer">ããã¿ã¼</footer>
</div>
ã¬ã¤ã¢ã¦ãã使ããããã« grid-template-areas ã使ç¨ãã¦ãããããã¡ãã£ã¢ã¯ã¨ãªã¼ã®ã»ãã«ãé åã«ååãä»ããå¿
è¦ãããã¾ããããã§ã¯ grid-area ããããã£ã使ã£ã¦é åã«ååãä»ãã¾ãã
.main-head {
grid-area: header;
}
.content {
grid-area: content;
}
.main-nav {
grid-area: nav;
}
.side {
grid-area: sidebar;
}
.ad {
grid-area: ad;
}
.main-footer {
grid-area: footer;
}
ããã§ã¬ã¤ã¢ã¦ãã¯ä½æããã¾ããããã¢ã¤ãã ã«ååãã¤ããã®ã§ãããã使ã£ã¦ã¬ã¤ã¢ã¦ãã使ãããã¨ãã§ãã¾ãã ã¡ãã£ã¢ã¯ã¨ãªã¼ã使ç¨ããã«ãããããã¢ãã¤ã«å¹ ç¨ã®ã¬ã¤ã¢ã¦ããè¨å®ãã¾ããããã§ã¯ãã°ãªããã¬ã¤ã¢ã¦ãã¨ã¢ã¯ã»ã·ããªãã£ã®ã¬ã¤ãã«è¨è¼ããã¦ããããã«ãã½ã¼ã¹ã¨è¡¨ç¤ºã®éã«æçµ¶ãçããªãããã«ããã¹ã¦ãã½ã¼ã¹é ã«ãã¦ãã¾ããåãè¡ã®ãã©ãã¯ã¯æç¤ºçã«å®ç¾©ãã¦ãã¾ããããã®ã¬ã¤ã¢ã¦ãã§ã¯ãåä¸ã®åãæå®ãããæé»ã®ã°ãªããå ã®ããããã®ã¢ã¤ãã ã«å¿ è¦ãªè¡ã使ããã¾ãã
.wrapper {
display: grid;
gap: 20px;
grid-template-areas:
"header"
"nav"
"content"
"sidebar"
"ad"
"footer";
}
ã¢ãã¤ã«ã¬ã¤ã¢ã¦ããè¨å®ããã¨ãã©ã®ç»é¢ãµã¤ãºã§ã 1 åã«ãªãã¾ããã @media ã追å ãã¦ã2 å表示ã§ããã ãã®ç»é¢é åãããå ´åã®ã¬ã¤ã¢ã¦ããåå®ç¾©ãããã¨ãã§ãã¾ãã
@media (width >= 500px) {
.wrapper {
grid-template-columns: 1fr 3fr;
grid-template-areas:
"header header"
"nav nav"
"sidebar content"
"ad footer";
}
nav ul {
display: flex;
justify-content: space-between;
}
}
grid-template-areas ã®å¤ã§ãã¬ã¤ã¢ã¦ããå½¢ã«ãªã£ã¦ãã¦ãããã¨ããããã¾ãã header 㯠nav ã¨åæ§ã« 2 åã®ãã©ãã¯ã«ã¾ããã£ã¦ãã¾ãã3 ã¤ç®ã®è¡ã®ãã©ãã¯ã«ã¯ã sidebar ã content ã®æ¨ªã«ä¸¦ã¹ã¦é
ç½®ãã¾ãã ad ã®ã³ã³ãã³ãã¯ããµã¤ããã¼ã®ä¸ã«ç¾ããããã« 4 ã¤ç®ã®è¡ã®äºå®ã«é
ç½®ãã¾ãã footer ã¯ããã®é£ãã³ã³ãã³ãã®ä¸ã«é
ç½®ãã¾ããããã²ã¼ã·ã§ã³ã«ã¯ CSS ãã¬ãã¯ã¹ããã¯ã¹ã¬ã¤ã¢ã¦ãã使ç¨ãã¦ãè¡å
ã®ããã²ã¼ã·ã§ã³ã¢ã¤ãã ã®ç©ºéãåçã«ãã¦ãã¾ãã
ããã§ã 3 åã®ã¬ã¤ã¢ã¦ãã表示ã§ããããåºãç»é¢ç¨ã®æå¾ã®ãã¬ã¼ã¯ãã¤ã³ãã追å ã§ãã¾ãã
@media (width >= 700px) {
.wrapper {
grid-template-columns: 1fr 4fr 1fr;
grid-template-areas:
"header header header"
"nav content sidebar"
"nav content ad"
"footer footer footer";
}
nav ul {
flex-direction: column;
}
}
ãã® 3 åã¬ã¤ã¢ã¦ãã«ã¯ã2 ã¤ã® 1fr åä½ã®ãµã¤ãåã¨ããã©ãã¯ãµã¤ãºã 4fr ã®ä¸å¤®åãããã¾ããããã¯ãã³ã³ããã¼å
ã§å©ç¨ã§ãã空éã 6 ã¤ã®é¨åã«åå²ããã3 ã¤ã®ãã©ãã¯ã«æ¯ä¾ãã¦å²ãå½ã¦ããã¦ãããã¨ãæå³ãã¾ããã¤ã¾ãããµã¤ãåã« 1 ã¤ãã¤ãä¸å¤®ã« 4 ã¤ãå²ãå½ã¦ããã¦ãã¾ãã
ãã®ã¬ã¤ã¢ã¦ãã§ã¯ãnav ã content ã®æ¨ªã«ä¸¦ãã å·¦åã«è¡¨ç¤ºãã¦ãã¾ããå³åã«ã¯ sidebar ãããããã®ä¸ã«åºå (ad) ãããã¾ããããã§ãfooter ã¯ã¬ã¤ã¢ã¦ãã®ä¸é¨å
¨ä½ã«åºãã£ã¦ãã¾ããããã§ããããã²ã¼ã·ã§ã³ã®è¡¨ç¤ºã«ã¯ãã¬ãã¯ã¹ããã¯ã¹ã使ç¨ãã¦ãã¾ãããä»åã¯è¡ã§ã¯ãªãåã¨ãã¦è¡¨ç¤ºãã¦ãã¾ãã
ãã®åºæ¬çãªä¾ã§ã¯ãç°ãªããã¬ã¼ã¯ãã¤ã³ãéã§ã°ãªããã¬ã¤ã¢ã¦ããåé
ç½®ããæ¹æ³ã示ãã¾ããå
·ä½çã«ã¯ãç°ãªãåã®ã¬ã¤ã¢ã¦ãã«å¿ãã¦ãad ãããã¯ã®ä½ç½®ãé©å®å¤æ´ãã¦ãã¾ãããã®ååä»ãé åã¡ã½ããã¯ãç¹ã«ãããã¿ã¤ãã³ã°ã®æ®µéã§ã¨ã¦ãå½¹ç«ã¡ã¾ããã°ãªããä¸ã®è¦ç´ ã®ä½ç½®ã夿´ããå ´åãæ°å¤ãããååã使ç¨ããã»ããç°¡åã§ããã¨æããããããã¾ããã
æè»ãª 12 åã®ã¬ã¤ã¢ã¦ã
CSS ãã¬ã¼ã ã¯ã¼ã¯ãã°ãªããã·ã¹ãã ã§ã¯ãé常 12 åã¾ã㯠16 åã®æè»ãªã°ãªããã使ç¨ããã¾ãã CSS ã°ãªããã¬ã¤ã¢ã¦ãã使ç¨ããã¨ããã®ç¨®ã®ã·ã¹ãã ãç°¡åã«ä½æãããã¨ãã§ãã¾ããä¾ãã°ã12 åã®æè»ãªã°ãªããã使ããããããã®åã« 12 åã® 1fr åä½ã®åãã©ãã¯ãè¨å®ããããããã®åã®éå§è¡ã« col-start ã¨ããååãä»ãã¾ããããã¯ã col-start ã¨ããååã® 12 æ¬ã®ã°ãªããç·ãåå¨ãããã¨ãæå³ãã¾ãã
.wrapper {
display: grid;
grid-template-columns: repeat(12, [col-start] 1fr);
gap: 20px;
}
ãã®ã°ãªããã·ã¹ãã ãã©ã®ããã«æ©è½ãããã示ãããã«ãã©ããã¼ã®ä¸ã« 4 ã¤ã®åè¦ç´ ãå ¥ãã¦ãã¾ãã
<div class="wrapper">
<div class="item1">å 1 ã®ç·ãå
é ã¨ãã¦ã 3 åã®ãã©ãã¯ã«ã¾ãããã¾ãã</div>
<div class="item2">
å 6 ã®ç·ãå
é ã¨ãã¦ã 4 åã2 è¡ã®ãã©ãã¯ã«ã¾ãããã¾ãã
</div>
<div class="item3">å 2ãè¡ 2 ã®ç·ãå
é ã¨ãã¦ã 3 åã®ãã©ãã¯ã«ã¾ãããã¾ãã
</div>
<div class="item4">
å 3 ã®ç·ãå
é ã¨ãã¦ãã°ãªããã®æ«å°¾ã¾ã§ã¾ãããã¾ã (-1)ã
</div>
</div>
ããããã°ãªããä¸ã«é
ç½®ããã«ã¯ãååä»ãã®ç·ã span ãã¼ã¯ã¼ãã使ãã¾ãã
.item1 {
grid-column: col-start / span 3;
}
.item2 {
grid-column: col-start 6 / span 4;
grid-row: 1 / 3;
}
.item3 {
grid-column: col-start 2 / span 2;
grid-row: 2;
}
.item4 {
grid-column: col-start 3 / -1;
grid-row: 3;
}
ååä»ãã°ãªããç·ã使ç¨ããã¬ã¤ãã§èª¬æããã¦ããããã«ãã¢ã¤ãã ãé ç½®ããããã«ååä»ãã®ç·ã使ç¨ãã¦ãã¾ããåãååã®ç·ã 12 æ¬ããã®ã§ãååãããã¦ç·çªå·ã使ãã¾ããå¿ è¦ã«å¿ãã¦ãç·çªå·èªä½ã使ç¨ããååä»ãç·ã®ä½¿ç¨ãé¿ãããã¨ãã§ãã¾ãã
æ«å°¾ã®ç·çªå·ãè¨å®ãã代ããã«ãspan ãã¼ã¯ã¼ãã使ç¨ãã¦ããã®è¦ç´ ãã¾ããããã©ãã¯ã®æ°ãå®ç¾©ãã¾ããè¤æ°åã®ã¬ã¤ã¢ã¦ãã·ã¹ãã ã使ç¨ããå ´åããããã¯ããããããã¾ãããã°ãªããã®ãã©ãã¯ã®æ°ã¨ãã¦èãããã¾ãã¾ãªãã¬ã¼ã¯ãã¤ã³ãã«åããã¦èª¿æ´ãã人ã«ã¨ã£ã¦ã¯ããã®æ¹æ³ã®æ¹ãç´æçã«çè§£ããããããããã¾ããããããã¯ããã©ãã¯ã«ã©ã®ããã«é
ç½®ããããã確èªããã«ã¯ããã©ã¦ã¶ã¼ã®éçºè
ãã¼ã«ã«ããã°ãªããã¤ã³ã¹ãã¯ã¿ã¼ã使ç¨ãã¦ãã ãããã¢ã¤ãã ãã©ã®ããã«é
ç½®ããã¦ããããã¯ã£ããã¨ãããã§ãããã

è¡ã使ããããã«ãã¼ã¯ã¢ããã追å ããå¿ è¦ã¯ããã¾ãããCSS ãã¬ã¼ã ã¯ã¼ã¯ã®ã°ãªããã·ã¹ãã ã§ã¯ãCSS ã°ãªããã¬ã¤ã¢ã¦ãã«å¯¾å¿ãã¦ããªããã©ã¦ã¶ã¼ã§è¦ç´ ãä¸ã®è¡ã«é£ã³åºããªãããã«ããã®ææ³ããã使ç¨ããã¦ãã¾ããããããããã®ç¹ã¯ä»ã§ã¯åé¡ã§ã¯ããã¾ããããã¹ã¦ã®ç¾è¡ã®ãã©ã¦ã¶ã¼ã¯ã以åãã CSS ã°ãªããã¬ã¤ã¢ã¦ãã«å¯¾å¿ãã¦ãã¾ããCSS ã°ãªããã使ç¨ããã¨ãã¢ã¤ãã ã空ã®ã¾ã¾ã«ãã¦ããã¦ãããã®ã¢ã¤ãã ãä¸ã®è¡ã«é£ã³åºãå¿é ãªããã¢ã¤ãã ãè¡ã«é ç½®ãããã¨ãã§ãã¾ãããã®å³æ ¼ãªåã¨è¡ã®é ç½®ã«ãããã¬ã¤ã¢ã¦ãã«ç©ºæ¬ãç°¡åã«æ®ããã¨ãã§ãã¾ããã¾ããã¢ã¤ãã ãã°ãªããã«ã¤ã³ãã³ãããããã«ç¹å¥ãªã¯ã©ã¹ãä¸è¦ã§ããå¿ è¦ãªã®ã¯ãã¢ã¤ãã ã®å é ã®ç·ã¨æ«å°¾ã®ç·ãæå®ãããã¨ã ãã§ãã
12 åã®ã·ã¹ãã ã使ç¨ãã¦ã¬ã¤ã¢ã¦ããä½ã
ãã®ã¬ã¤ã¢ã¦ãæ¹æ³ãå®éã«ã©ã®ããã«æ©è½ãããã確èªããããã«ã grid-template-areas ã§ä½æããã®ã¨åãã¬ã¤ã¢ã¦ãããä»åº¦ã¯ 12 åã®ã°ãªããã·ã¹ãã ã使ã£ã¦ä½æãã¦ã¿ã¾ããããããã§ã¯ãã°ãªãããã³ãã¬ã¼ãé åã®ä¾ã§ä½¿ç¨ããã®ã¨åããã¼ã¯ã¢ããã§å§ãã¾ãã
<div class="wrapper">
<header class="main-head">ãããã¼</header>
<nav class="main-nav">
<ul>
<li><a href="">ãã 1</a></li>
<li><a href="">ãã 2</a></li>
<li><a href="">ãã 3</a></li>
</ul>
</nav>
<article class="content">
<h1>ã¡ã¤ã³è¨äºé å</h1>
<p>
ãã®ã¬ã¤ã¢ã¦ãã§ã¯ãå¹
ã 500 ãã¯ã»ã«ä»¥ä¸ã®ç»é¢ã§ã¯ãé åãã½ã¼ã¹é ã«è¡¨ç¤ºãã¾ããã°ãªããã¨ã°ãªããä¸ã®ã¢ã¤ãã ã®é
ç½®ãåå®ç¾©ãããã¨ã§ã2 åã¬ã¤ã¢ã¦ãã3 åã¬ã¤ã¢ã¦ãã¸ã¨å¤åãã¦ããã¾ãã
</p>
</article>
<aside class="side">ãµã¤ããã¼</aside>
<div class="ad">åºå</div>
<footer class="main-footer">ããã¿ã¼</footer>
</div>
12 åã®ã¬ã¤ã¢ã¦ãã®ä¾ã§è¨å®ããã°ãªãããè¨å®ãã¾ãã
.wrapper {
display: grid;
grid-template-columns: repeat(12, [col-start] 1fr);
gap: 20px;
}
ä»åãã¬ã¹ãã³ã·ãã¬ã¤ã¢ã¦ãã使ãã¾ãããä»åã¯ååä»ãè¡ã使ç¨ãã¾ãããã¹ã¦ã®ãã¬ã¼ã¯ãã¤ã³ã㯠12 åã®ã°ãªããã使ç¨ãã¾ãããã ããã¢ã¤ãã ãã¾ããããã©ãã¯ã®æ°ã¯ãç»é¢ã®ãµã¤ãºã«å¿ãã¦å¤åãã¾ãã
ã¢ãã¤ã«ãã¡ã¼ã¹ãã§å§ãã¾ããæãçãç»é¢ã§ã¯ãã¢ã¤ãã ã¯ã½ã¼ã¹ã®é åºã®ã¾ã¾ããã¹ã¦ã°ãªããå ¨ä½ã«ã¾ãããããã«è¡¨ç¤ºãããã¨ãã¾ãã
.wrapper > * {
grid-column: col-start / span 12;
}
次ã®ãã¬ã¤ã¯ãã¤ã³ãã§ã¯ã2 åã®ã¬ã¤ã¢ã¦ãã«ãããã¨æãã¾ãããããã¼ã¨ããã²ã¼ã·ã§ã³ã¯ã°ãªããå ¨ä½ã使ã£ã¦ããã®ã§ããããã®ä½ç½®ãæå®ããå¿ è¦ã¯ããã¾ããããµã¤ããã¼ã¯ãcol-start ã¨ããååã®æåã®åã®ç·ããå§ã¾ãã3 æ¬ã«æ¸¡ã£ã¦ãã¾ãããããã¼ã¨ããã²ã¼ã·ã§ã³ãæåã® 2 ã¤ã®è¡ãã©ãã¯ã«ããã®ã§ããµã¤ããã¼ã¯ 3 è¡ç®ä»¥éã«ãªãã¾ãã
ad ããã«ã¯ããµã¤ããã¼ã®ä¸ã«ããã®ã§ãã°ãªããã®è¡ã® 4 è¡ç®ããå§ã¾ãã¾ããããã¦ãã³ã³ãã³ãã¨ããã¿ã¼ã¯ col-start 4 ããå§ã¾ãã9 ãã©ãã¯ã«æ¸¡ã£ã¦ã°ãªããã®æå¾ã¾ã§ç¶ãã¾ãã
@media (width >= 500px) {
.side {
grid-column: col-start / span 3;
grid-row: 3;
}
.ad {
grid-column: col-start / span 3;
grid-row: 4;
}
.content,
.main-footer {
grid-column: col-start 4 / span 9;
}
nav ul {
display: flex;
justify-content: space-between;
}
}
æå¾ã«ãæå¤§ã®ãã¬ã¼ã¯ãã¤ã³ãããã大ããç»é¢ã«ã¤ãã¦ã¯ããã®ã¬ã¤ã¢ã¦ãã® 3 åãã¼ã¸ã§ã³ãå®ç¾©ãã¾ãããããã¼ã¯å¼ãç¶ãã°ãªããå ¨ä½ã«åºãã£ã¦ãã¾ãããããã²ã¼ã·ã§ã³ãä¸ã«ç§»åãã¦æåã®ãµã¤ããã¼ã¨ãªãããã®é£ã«ã³ã³ãã³ãã¨ãµã¤ããã¼ãé ç½®ããã¦ãã¾ããã¾ããããã¿ã¼ãã¬ã¤ã¢ã¦ãå ¨ä½ã«åºãã£ã¦ãã¾ãã
@media (width >= 700px) {
.main-nav {
grid-column: col-start / span 2;
grid-row: 2 / 4;
}
.content {
grid-column: col-start 3 / span 8;
grid-row: 2 / 4;
}
.side {
grid-column: col-start 11 / span 2;
grid-row: 2;
}
.ad {
grid-column: col-start 11 / span 2;
grid-row: 3;
}
.main-footer {
grid-column: col-start / span 12;
}
nav ul {
flex-direction: column;
}
}
ç¹°ãè¿ãã«ãªãã¾ããããã©ã¦ã¶ã¼ã®éçºè ãã¼ã«ã§ã°ãªããã¤ã³ã¹ãã¯ã¿ã¼ããã§ãã¯ãã¦ãã¬ã¤ã¢ã¦ããã©ã®ããã«å½¢ã«ãªã£ããã確èªãã¦ãã ããã

ãã®ã¬ã¤ã¢ã¦ãã使ããéã«æ³¨æãã¹ãç¹ã¯ãåãã¬ã¼ã¯ãã¤ã³ãã§ã°ãªããä¸ã®ãã¹ã¦ã®è¦ç´ ã®ä½ç½®ãæç¤ºçã«æå®ããå¿ è¦ããªãã£ããã¨ã§ãã以åã®ãã¬ã¼ã¯ãã¤ã³ãã§è¨å®ããé ç½®ãç¶æ¿ããããã§ããããã¯ãã¢ãã¤ã«ãã¡ã¼ã¹ããã§ä½æ¥ããã¡ãªããã§ããã¾ããã°ãªããã®èªåé ç½®ãæ´»ç¨ãã¾ãããè¦ç´ ãè«ççãªé åºã§é ç½®ãã¦ãããã¨ã§ãã°ãªããã¸ã®ã¢ã¤ãã ã®é ç½®ä½æ¥ãå¤§å¹ ã«è»½æ¸ããã¾ãã
èªåé ç½®ããã製åãªã¹ã
ãã®ã¬ã¤ãã®æå¾ã®ä¾ã§ã¯ãèªåé ç½®ã«å®å ¨ã«ä¾åããã¬ã¤ã¢ã¦ãã使ãã¾ãã
å¤ãã®ã¬ã¤ã¢ã¦ãã¯ãæ¬è³ªçã«ã¯ä¸é£ã®ãã«ã¼ããã§æ§æããã¦ãã¾ãã製åãªã¹ããç»åã®ã£ã©ãªã¼ãªã©ã¨ãã£ãå ·åã§ããã°ãªããã使ç¨ããã¨ãã¡ãã£ã¢ã¯ã¨ãªã¼ã追å ãããã¨ãªããã¬ã¹ãã³ã·ããªæ¹æ³ã§ãããã®ãªã¹ãã使ãããã¨ãã§ãã¾ãããã®ä¾ã§ã¯ãCSS ã°ãªããã¨ãã¬ãã¯ã¹ããã¯ã¹ã®ã¬ã¤ã¢ã¦ããçµã¿åããã¦ãåºæ¬çãªè£½åãªã¹ãã®ã¬ã¤ã¢ã¦ãã使ãã¦ãã¾ãã
ã¢ã¤ãã ãªã¹ãã®ãã¼ã¯ã¢ããã¯ãé ä¸åã®ã¢ã¤ãã ãªã¹ãã§ããåé ç®ã«ã¯ãè¦åºãããã¾ãã¾ãªé«ãã®ããã¹ããã³ã¼ã«ãã¥ã¢ã¯ã·ã§ã³ã®ãªã³ã¯ãå«ã¾ãã¦ãã¾ãã
<ul class="listing">
<li>
<h2>ã¢ã¤ãã 1</h2>
<div class="body">
<p>ãã®ã¢ã¤ãã ã®ã³ã³ãã³ããããã«æ¥ã¾ãã</p>
</div>
<div class="cta">
<a href="">ã³ã¼ã«ãã¥ã¢ã¯ã·ã§ã³</a>
</div>
</li>
<li>
<h2>ã¢ã¤ãã 2</h2>
<div class="body">
<p>ãã®ã¢ã¤ãã ã®ã³ã³ãã³ããããã«æ¥ã¾ãã</p>
</div>
<div class="cta">
<a href="">ã³ã¼ã«ãã¥ã¢ã¯ã·ã§ã³</a>
</div>
</li>
<li class="wide">
<h2>ã¢ã¤ãã 3</h2>
<div class="body">
<p>ãã®ã¢ã¤ãã ã®ã³ã³ãã³ããããã«æ¥ã¾ãã</p>
<p>ãã¡ãã¯ä»ã®ã¢ã¤ãã ãããæåæ°ãå¤ãã§ãã</p>
<p>ã¯ããã«ãããã</p>
<p>ä½ãéããã¨ãã§ããã®ã§ã¯ï¼</p>
</div>
<div class="cta">
<a href="">ã³ã¼ã«ãã¥ã¢ã¯ã·ã§ã³</a>
</div>
</li>
<li>
<h2>ã¢ã¤ãã 4</h2>
<div class="body">
<p>ãã®ã¢ã¤ãã ã®ã³ã³ãã³ããããã«æ¥ã¾ãã</p>
</div>
<div class="cta">
<a href="">ã³ã¼ã«ãã¥ã¢ã¯ã·ã§ã³</a>
</div>
</li>
<li>
<h2>ã¢ã¤ãã 5</h2>
<div class="body">
<p>ãã®ã¢ã¤ãã ã®ã³ã³ãã³ããããã«æ¥ã¾ãã</p>
</div>
<div class="cta">
<a href="">ã³ã¼ã«ãã¥ã¢ã¯ã·ã§ã³</a>
</div>
</li>
</ul>
æè»ãªåæ°ã®ã°ãªããã使ãã¾ããåã®å¹
㯠200 ãã¯ã»ã«ä»¥ä¸ã¨ããå©ç¨å¯è½ãªæ®ãã®ç©ºéãåçã«åå²ãã¦ã常ã«åãå¹
ã®åã®äºå®è¡¨ãåå¾ããããã«ãã¾ããããã¯ãäºå®è¡¨ã®ãµã¤ãºæå®ã« minmax() 颿°ã repeat() è¨æ³ã§ä½¿ç¨ãããã¨ã§å®ç¾ã§ãã¾ãã
.listing {
list-style: none;
margin: 2em;
display: grid;
gap: 20px;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
ãã® CSS ã追å ããã¨ãã¢ã¤ãã ã¯ã°ãªããã¨ãã¦ã¬ã¤ã¢ã¦ãããã¾ããã¦ã£ã³ãã¦ãå°ãããããåºããããããã¨ãã¡ãã£ã¢ã¯ã¨ãªã¼ããã¬ã¼ã¯ãã¤ã³ãã追å ããããã°ãªãããåå®ç¾©ããããããã¨ãªããåã®ãã©ãã¯ã®æ°ãå¤åãã¾ãã
ãã®å¾ããã¬ãã¯ã¹ããã¯ã¹ã使ã£ã¦ããã¯ã¹ã®å
é¨ãæ´çãã¾ãããªã¹ãã¢ã¤ãã ã display: flex ã«è¨å®ãã flex-direction ã column ã«è¨å®ãã¾ããããã¦ã.cta ã« auto ãã¼ã¸ã³ã使ç¨ãã¦ããã®ãã¼ãããã¯ã¹ã®ä¸ã¾ã§æ¼ãè¾¼ã¿ã¾ãã
.listing li {
border: 1px solid #ffe066;
border-radius: 5px;
display: flex;
flex-direction: column;
}
.listing .cta {
margin-block-start: auto;
border-block-start: 1px solid #ffe066;
padding: 10px;
text-align: center;
}
.listing .body {
padding: 10px;
}
ããããCSS ã°ãªããã¬ã¤ã¢ã¦ãã§ã¯ãªããã¬ãã¯ã¹ããã¯ã¹ã使ç¨ãã主ãªçç±ã®ã²ã¨ã¤ã§ããã³ã³ãã³ããåä¸ã®ãµã¤ãºã§é ç½®ã¾ãã¯åæ£ããå ´åã¯ããã¬ãã¯ã¹ããã¯ã¹ãé©ãã¦ãã¾ãã
dense ãã¼ã¯ã¼ãã§ééãé²ã
ããã§ãã»ã¼å®æãã¾ãããããããä»ã®ã«ã¼ããããã¯ããã«å¤ãã®ã³ã³ãã³ããå«ãã«ã¼ããããå ´åãããã¾ãããã®ãããªã«ã¼ã㯠2 ã¤ã®ãã©ãã¯ã«ã¾ããã£ã¦è¡¨ç¤ºããã¨ãé«ããããã»ã©é«ããªãã¾ããã大ããã¢ã¤ãã ã« wide ã¯ã©ã¹ã追å ããæå®ãã grid-column-end ã®å¤ã span 2 ã«è¨å®ããã«ã¼ã«ã追å ãã¾ãããã®ã¢ã¤ãã ã«ééããã¨ã2 ã¤ã®ãã©ãã¯ã«å²ãå½ã¦ããã¾ããããã¯ãä¸é¨ã®ãã¬ã¼ã¯ãã¤ã³ãã§ã2 ãã©ãã¯ã®ã¢ã¤ãã ãé
ç½®ããã®ã«ååãªç©ºéããªããããã°ãªããã«ã®ã£ãããçããã¨ãããã¨ã§ãã

ã°ãªããã³ã³ããã¼ã« grid-auto-flow: dense ãè¨å®ãããã¨ã§ãã°ãªããã«ãããã®ã®ã£ãããåãæ»ããã¨ãã§ãã¾ãããã®æä½ãè¡ãå ´åã¯ãã¢ã¤ãã ãè«ççãªã½ã¼ã¹ã®é åºããå¤ãã¦ãã¾ãå¯è½æ§ããããããæ³¨æãã¦ãã ããããã®æä½ã¯ãã¢ã¤ãã ã«è¨å®ãããé åºããªãå ´åã«ã®ã¿å®è¡ãã¦ãã ãããããã«ãã½ã¼ã¹ã®é åºã«å¾ã£ã¦ã¿ãã®é åºãè¨å®ãããåé
ç½®ãã表示é åºã¨ã¯ç°ãªããããã¢ã¯ã»ã·ããªãã£ã¨åé
ç½®ã«é¢ããåé¡ãçºçããå¯è½æ§ããããã¨ã«æ³¨æãã¦ãã ããã
.listing {
list-style: none;
margin: 2em;
display: grid;
gap: 20px;
grid-auto-flow: dense;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
.listing .wide {
grid-column-end: span 2;
}
ç¹å®ã®ã¢ã¤ãã ã«ããã¤ãã®ã«ã¼ã«ãé©ç¨ãã¦èªåé ç½®ã使ç¨ãããã¨ã¯ã¨ã¦ã便å©ã§ãCMS åºåãªã©ãå¶å¾¡ã§ããªãã³ã³ãã³ãã«å½¹ç«ã¡ã¾ããCMS åºåã§ã¯ãã¢ã¤ãã ãç¹°ãè¿ãåºç¾ãã¾ãããæ§é æ¬ä¼¼ã¯ã©ã¹ã使ç¨ãã¦ããããã対象ã¨ãããã¨ãã§ãã¾ãã
ãããªãæ¢æ±
CSS ã°ãªããã¬ã¤ã¢ã¦ãã¯ãé常ã«å¤ãã®å¯è½æ§ãæä¾ãã¾ããã°ãªããã¬ã¤ã¢ã¦ãã®ä½¿ç¨æ¹æ³ãå¦ã¶æè¯ã®æ¹æ³ã¯ãããã§åãä¸ããä¾ã¨åæ§ã®ä¾ãæ§ç¯ãç¶ãããã¨ã§ããã好ã¿ã®ã¬ã¹ãã³ã·ããµã¤ãããã¬ã¤ã¢ã¦ããé¸ã³ãã°ãªããã使ç¨ãã¦æ§ç¯ã§ãããã©ãã試ãã¦ã¿ã¦ãã ãããéèªããã®ä»ã®ã¦ã§ã以å¤ã®ã½ã¼ã¹ããçæ³ãå¾ããã¨ãã§ãã¾ãã
- CSS ã°ãªããã¬ã¤ã¢ã¦ã
- CSS ã¬ã¤ã¢ã¦ã: ã°ãªãã
- CSS grid layout guide - CSS-Tricks (2021)
- Grid by example
- CSS grid website layout examples on quackit.com