CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSのgrid-template-areasプロパティでグリッドレイアウト内の領域を設定する方法

グリッドレイアウト内に名前付きの領域(エリア)を定義するには、grid-template-areas プロパティを使用します。このプロパティを使うと、グリッドコンテナ内の各セルに名前を割り当て、直感的かつ視覚的にレイアウトを設計できるようになります。

grid-template-areas の基本

まず、配置したい要素に対して grid-area プロパティで領域名を指定し、次にグリッドコンテナ側で grid-template-areas にその領域名とドット(.)を組み合わせてレイアウトを記述します。ドットは「空のセル」を表し、文字列の各行がグリッドの1行分に対応します。

実装例

以下の例では、「newArea」という名前の領域をグリッドの左上に2行×2列分のサイズで設定しています。残りのセルはドットで空欄として指定しています。

<!DOCTYPE html>
<html>
<head>
<style>
.demo {
    grid-area: newArea;
}
.grid-container {
    display: grid;
    grid-template-areas:
    'newArea newArea . . .'
    'newArea newArea . . .';
    grid-gap: 5px;
    background-color: blue;
    padding: 5px;
}
.grid-container > div {
    background-color: orange;
    text-align: center;
    padding: 5px 0;
    font-size: 30px;
}
</style>
</head>
<body>
<h1>見出し</h1>
<p>ランダムな数値を表示します</p>
<div class="grid-container">
<div class="demo">250</div>
<div class="item2">120</div>
<div class="item3">333</div>
<div class="item4">298</div>
<div class="item5">645</div>
<div class="item6">543</div>
<div class="item7">555</div>
</div>
</body>
</html>

実行結果

CSSのgrid-template-areasプロパティでグリッドレイアウト内の領域を設定する方法

このコードを実行すると、クラス「demo」を持つ要素(数値250)が、グリッドの左上にまたがる大きな領域として配置されます。同じ領域名を複数行・複数列にわたって繰り返し記述することで、その要素が複数のセルを結合した形で表示されるのがポイントです。

ポイントまとめ

  • grid-area:個々のグリッドアイテムに領域名を割り当てます。
  • grid-template-areas:領域名とドット(.)を使って、グリッド全体のレイアウトを行単位で定義します。
  • 同じ領域名を連続して記述すると、複数のセルを結合した大きな領域を作成できます。
  • ヘッダー・サイドバー・メインコンテンツ・フッターのような典型的なページレイアウトも、このプロパティだけで簡潔に表現できます。
  1. 【CSS】Flexboxで作る高度なレイアウト!基本プロパティと実装サンプルを解説

    Flexbox(フレックスボックス)とは? CSS3には「Flexible Box Layout(フレキシブルボックスレイアウト)」と呼ばれるレイアウトモードが用意されており、一般的にはFlexbox(フレックスボックス)として知られています。Flexboxを活用することで、従来のfloatやpositionを使った手法よりもはるかに簡単かつ柔軟に、複雑なWebアプリケーションやWebページのレイアウトを構築できます。 Flexboxは「フレックスコンテナ」(親要素)と「フレックスアイテム」(子要素)という2つの概念で構成されます。親要素にdisplay: flex;を指定するだけで、その直下

  2. CSSで4列のレイアウトグリッドを作成する方法

    CSSで4列のレイアウトグリッドを作成するには、各カラムとなる要素に float: left; を指定し、幅を 25% に設定するのが基本的な手法です。これにより、4つの要素が横一列に均等に並びます。以下に具体的なコード例を示します。 サンプルコード <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style> body {