グリッド

完全にカスタマイズ可能でレスポンシブなCSSグリッド。

Pureグリッド入門

Pureグリッドは扱いやすく、非常に強力です。いくつかの簡単な概念を覚えておいてください。

グリッドクラスとユニットクラス
Pureグリッドは、グリッドクラス(pure-g)とユニットクラス(pure-uまたはpure-u-*)の2種類のクラスで構成されています。
ユニットの幅は分数です
ユニットには、幅を表すさまざまなクラス名があります。たとえば、pure-u-1-2は幅が50%であるのに対し、pure-u-1-5は幅が20%になります。
グリッドの子要素はすべてユニットである必要があります
pure-gクラス名を持つ要素に含まれる子要素は、必ずpure-uまたはpure-u-*クラス名を持つグリッドユニットである必要があります。
コンテンツはグリッドユニットの内側に配置されます
人に見えるすべてのコンテンツは、グリッドユニットの内側に含まれている必要があります。これにより、コンテンツが適切にレンダリングされます。

簡単な例から始めましょう。これは3つの列を持つグリッドです。

<div class="pure-g">
    <div class="pure-u-1-3"><p>Thirds</p></div>
    <div class="pure-u-1-3"><p>Thirds</p></div>
    <div class="pure-u-1-3"><p>Thirds</p></div>
</div>

グリッドユニットのサイズ

Pureには、5分割24分割ベースのグリッドが同梱されています。以下に示すのは、pure-u-*クラス名に追加できる利用可能なユニットです。*は、以下にリストされているユニット分数の1つです。たとえば、50%幅のユニットクラス名はpure-u-1-2です。

5分割ベースのユニット

1-5
2-5
3-5
4-5
1
1-1
5-5

24分割ベースのユニット

1-24
1-12
2-24
3-24
1-8
4-24
1-6
5-24
1-4
6-24
7-24
1-3
8-24
3-8
9-24
5-12
10-24
11-24
1-2
12-24
13-24
7-12
14-24
5-8
15-24
2-3
16-24
17-24
3-4
18-24
19-24
5-6
20-24
7-8
21-24
11-12
22-24
23-24
1
1-1
24-24

カスタムユニットサイズ

Pureグリッドをカスタマイズするためのツールを構築中です。最初のローレベルツールであるPure Grids Rework Pluginは、今日から利用できます。このツールを使用して、Pureに組み込まれているユニットサイズを生成しています。

Pureレスポンシブグリッド

Pureには、CSSクラス名を介して宣言的に使用できる、モバイルファーストのレスポンシブグリッドシステムがあります。これは、デフォルトのグリッドをベースにした、堅牢で柔軟なグリッドです。

ページへの組み込み

メディアクエリは上書きできないため、グリッドシステムはpure.cssの一部として含まれていません。別のCSSファイルとしてプルインする必要があります。これを行うには、次の<link>タグをページに追加します。

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/grids-responsive-min.css" />

Pureの通常グリッドとレスポンシブグリッド

Pureの通常グリッドとレスポンシブグリッドの違いを理解する最良の方法は、例を通して理解することです。以下のスニペットは、通常のPureグリッドがどのように記述されるかを示しています。これらのグリッドはレスポンシブではありません。画面の幅に関係なく、常にwidth: 33.33%になります。

<div class="pure-g">
    <div class="pure-u-1-3"> ... </div>
    <div class="pure-u-1-3"> ... </div>
    <div class="pure-u-1-3"> ... </div>
</div>

次に、レスポンシブグリッドを見てみましょう。このグリッド内の要素は、小さな画面ではwidth: 100%になりますが、中サイズの画面以上ではwidth: 33.33%に縮小します。

<div class="pure-g">
    <div class="pure-u-1 pure-u-md-1-3"> ... </div>
    <div class="pure-u-1 pure-u-md-1-3"> ... </div>
    <div class="pure-u-1 pure-u-md-1-3"> ... </div>
</div>

デフォルトのメディアクエリ

レスポンシブグリッドを使用する場合、クラス名を追加することで、特定のブレークポイントでグリッドがどのように動作するかを制御できます。Pureのデフォルトのレスポンシブグリッドには、次のクラス名とメディアクエリのブレークポイントが付属しています。

キーCSSメディアクエリ適用クラス名
なしなし常に.pure-u-*
sm@media screen and (min-width: 35.5em)568px.pure-u-sm-*
md@media screen and (min-width: 48em)768px.pure-u-md-*
lg@media screen and (min-width: 64em)1024px.pure-u-lg-*
xl@media screen and (min-width: 80em)1280px.pure-u-xl-*
xxl@media screen and (min-width: 120em)1920px.pure-u-xxl-*
xxxl@media screen and (min-width: 160em)2560px.pure-u-xxxl-*
x4k@media screen and (min-width: 240em)3840px.pure-u-x4k-*

幅に相対単位を使用する

デフォルトのCSSメディアクエリの幅にpxではなくemを使用していることに気づいたかもしれません。これは、ユーザーがWebページをズームしたときにメディアクエリが適切に応答できるようにするための意図的な決定です。メディアクエリ内で相対単位を使用するための背景情報については、Brad Frostによるこの記事を参照してください。

em以外の単位を使用する場合は、はじめにページでデフォルトのメディアクエリをいつでも変更できます。emからpxへの変換は非常に簡単です。

1em == 16px *

* emからpxへの変換は、ブラウザのデフォルトのフォントサイズ(通常は16px)に基づいていますが、ユーザーがブラウザの設定で上書きすることができます。

Pureレスポンシブグリッドの例

次の例では、Pureのレスポンシブグリッドを利用して、4つの列を持つ行を作成します。列は、小さな画面では積み重ねられ、中サイズの画面ではwidth: 50%、大きな画面ではwidth: 25%になります。

これは、小さな画面には.pure-u-1クラス、中サイズの画面には.pure-u-md-1-2、大きな画面には.pure-u-lg-1-4を追加することで実現されます。ページをリサイズして、グリッドが画面サイズに対応することを確認してください。

Lorem Ipsum

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

Dolor Sit Amet

Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse.

Proident laborum

In culpa qui officia deserunt mollit anim id est laborum. incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.

Praesent consectetur

Integer vitae lectus accumsan, egestas dui eget, ullamcorper urn. In feugiat tortor at turpis rhoncus tincidunt. Duis sed porttitor ante, eget venenatis lectus.

By Sylwia Bartyzel from unsplash.com

2/5列

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur fermentum dui turpis.

3/5列

Quisque ac magna eget est porta varius ut eget quam. Curabitur tincidunt gravida nisl.

Fusce accumsan, sem vitae tempus tempor, nulla lectus interdum felis, eget molestie urna mauris vel elit. Curabitur vel ipsum nulla.

モバイルでのグリッド

Pureのデフォルトのグリッドシステムは、モバイルファーストです。小さな画面でグリッドを使用したい場合は、要素にpure-u-*クラス名を使用するだけです。

3分割

このセルは常に1/3幅になります。

3分割

このセルは常に1/3幅になります。

3分割

このセルは常に1/3幅になります。

レスポンシブ画像

レスポンシブグリッドを使用する場合、画像もコンテンツに合わせて拡大縮小し、正しい比率を維持できるように、流動的にする必要があります。これを行うには、.pure-imgクラスを画像に追加するだけです。以下の例を確認してください。

Peyto Lake
Train
T-Shirt Store
Mountain
Miami
BCE Place, Toronto
Banff
Boston North Point Park

グリッドユニットへのパディングとボーダーの適用

Pureグリッドにボーダーとパディングを追加するには、2つのオプションがあります。最初のオプションは、各グリッドユニットの内側に<div>をネストし、子コンテナをスタイルすることです。

<style>
    .l-box {
        padding: 1em;
    }
</style>

...

<div class="pure-g">
    <div class="pure-u-1-2">
        <div class="l-box"> ... </div>
    </div>
    <div class="pure-u-1-2">
        <div class="l-box"> ... </div>
    </div>
</div>

2番目のオプションは、ボーダーとパディングをグリッドユニットに直接追加することです。通常、これはレイアウトを壊す危険性がありますが、box-sizing: border-boxルールを使用してグリッド自体の動作を補強することで、この問題を簡単に回避できます。

<style>
    .pure-g > div {
        box-sizing: border-box;
    }
    .l-box {
        padding: 1em;
    }
</style>

...

<div class="pure-g">
    <div class="pure-u-1-2 l-box"> ... </div>
    <div class="pure-u-1-2 l-box"> ... </div>
</div>

box-sizing: border-boxを使用すると、マークアップをよりクリーンに保つことができますが、1つだけ小さな欠点があります。すべてのグリッドユニットでこのプロパティを設定すると、後で値を上書きしたり、設定を解除したりするのが難しくなります。意見を持たないライブラリとして、Pureはbox-sizingをデフォルト値のcontent-boxのままにし、選択をユーザーに任せています。

グリッドだけを使用したいですか?

グリッドはPure CSSファイルの一部です。ただし、グリッドのみが必要で、他のモジュールが必要ない場合は、個別にプルダウンできます。これらの<link>要素を<head>に含めるだけです。

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/base-min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/grids-min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/grids-responsive-min.css">