HTML/CSS 入門 Gridで幅を調整する

以下のようなGridレイアウトがあります。

HTMLとCSSは以下です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="002.css">
    <title>grid002</title>
</head>
<body>
    <div class="content">
        <div>A</div>
        <div>B</div>
        <div>C</div>
        <div>D</div>
        <div>E</div>
        <div>F</div>
        <div>G</div>
        <div>H</div>
        <div>I</div>
    </div>
</body>
</html>
.content {
    width: 960px;
    margin: auto;
    display: grid;
    grid-template-columns: 320px 320px 320px;
}
.content>div{
    background: lightpink;
    color: #FFF;
    text-align: center;
    padding: 10px;
}
.content>div:nth-child(even) {
    background: lightblue;
}

.content の横幅を960pxとしていて、三等分したいので今は grid-template-columns: 320px 320px 320px; としています。

grid-template-columns にはパーセントも指定できる

grid-template-columns にはパーセントも指定できるので以下のようにしても同じです。

grid-template-columns: 33.3% 33.3% 33.3%;

新たな単にfrも指定できる

frという単位でも指定できます。

grid-template-columns: 1fr 1fr 1fr;

比率のようなものなので、すべてのカラムが1fr = 均等となります。

以下のようにした場合は

grid-template-columns: 1fr 1fr 2fr;

以下のようになります。三カラムだけ他の2倍の幅をとっています。

repeatで簡潔にかける

以下のようにrepeatを使うと同じことが簡潔にかけます。

grid-template-columns: repeat(3, 1fr);

repeatの第一引数は「何回繰り返すか」です。第二引数は「何を」です。

この場合は、「1frを三回繰り返す」となるので、以下と同じです。

grid-template-columns: 1fr 1fr 1fr;

以下のようにした場合は、grid-template-columns: 1fr 1fr 2fr; と同じです。

grid-template-columns: repeat(2, 1fr) 2fr;