blender feedly hatena Illustrator jquery palette photoshop pocket mail border-color insert-comment file-download person creative-commons-attribution creative-commons-noderivs creative-commons-noncommercial-us creative-commons-public-domain creative-commons-sharealike creative-commons emoji-happy emoji-neutral emoji-sad magnifying-glass file-o clock-o tag bars desktop quill music folder-open embed2 mail4 google facebook facebook3 twitter twitter3 feed4 wordpress pinterest html5 css3
Web

Sassのグリッドシステム「Profound Grid」の使い方

,
巷にはたくさんのグリッドシステムがありますが、正直どれを使っていいか分からないです…。 とりあえず最近使っているProfound Gridについて意外と解説が少ないので、自分が使っている範囲で説明してみようと思います。

Profound Gridとは?

Sass(SCSS)を使ったグリッドシステムです。 BootstrapやFoundationの様にUIなどは用意されておらず、完全にレイアウト専用ですね。
Profound Gridのページ、またはGithubからダウンロードができます。

使う準備

使うファイルは_grid.scssのみ。 _grid.scssを使用 これをメインのSassファイルに@importすれば、使う準備が完了します!あっという間ですね!

ざっくりとした使い方は?

よくあるグリッドシステムは、htmlのマークアップ時にclassを付与していくパターンが多いですよね! ProfoundGridは、おおまかに2つの使い方があります。
  1. グリッドを使いたい要素に対してmixinを@includeしてグリッドを生成する方法
  2. mixinでclassを生成して、マークアップ時に要素にclassをつける方法

結局は両方使う必要があるのですが、ざっくりとした傾向として
  • Media Queryでレイアウトを切り替える場合→①の方法
  • Fluid又は固定レイアウトで切り替えない場合→②の方法
という感じがあるかなぁ…と思います。もちろん組み合わせて使うこともできますよ!

さっそく使ってみよう

基本的には他のグリッドシステムと同じで、「コンテナになる要素を生成し、その中の各要素に対してグリッドを指定する」感じになります。 それではさっそく、実際の使い方を見てみましょう!

初期値の設定

まずは初期値(変数)の設定をします。Media Queryごとに設定もできますよ! 主に設定するのは以下の3つ。設定していないとデフォルト値が使われます。
図で表すとこんな感じです。 初期値設定 ここで注意したいことが。この3つに「%指定」と「px指定」が混ざっていると、エラーが出てSassがコンパイルされません!デフォルト値は混ざってるので、そのまま使うとまさかのエラーが出ます。何でだ…。

リキッドレイアウトにしたい時は%指定、固定幅ならpx指定…という感じで統一してください。

基本リキッドで最大幅を指定したい…という時は、コンテナにした要素(詳しくは後述します)に対してmax-widthを設定して、$container_marginをautoにしてあげればOKです。個別にコンテナの最大幅が変え放題って柔軟でいいですよね!

また、カラム数も自分で決めることができます。よほどのことがなければ変えなくていいと思います。
ちなみにコンテナ内の分割数=カラム数になるので、1カラムの幅はコンテナ幅に依存します。コンテナを入れ子にしたりした場合は、その分1カラムの幅が狭くなったりするのでお気をつけ下さい。 ネストした場合のカラム

基本の使い方

大まかなレイアウトをする場合は、以下の3つのmixinを使えばOKです。
例えばこんな感じのレイアウトにしたい場合は、以下の様にします。 グリッド例1

html

Sass

@include column();引数は、カラム幅を指定します。1だと1/12の幅、6だと6/12=半分の幅になります。@include push();引数は、カラム位置です。1だと左から1カラム分、6だと左から6カラム=半分の位置に移動します。
また、コンテナはそのつどclearfixをかけてあげないとコンテナが全部重なる…という悲しいことになりますので、ご注意ください。

同じ幅のボックスを並べる

コンテナの中に同じ幅のボックスを並べたい…という場合は、@include generate_grid_positions();を使います。 グリッド例2

html

Sass

親要素に@include container();をして、並べたい子要素に対して@include column();を設定します。 ここまでは同じですが、このままだと子要素が重なってしまうので、 親に対して@include generate_grid_positions();を指定してください。(分かりやすいように子要素の下に書いてますが、別に上でもOKです。)引数はカラム指定した子要素と、その子要素のカラム幅です。これでずらりと並びます。 グリッドの縦マージンは、$gutter_widthと同じ値になります。

classを生成してマークアップ

@include generate_helper_classes();でクラスを生成して、マークアップ時にクラスを付与するタイプです。ここではこんな感じにしたい場合のマークアップにしてみます。 グリッド例3

Sass

とりあえずコンテナは生成しないといけないので、コンテナになるarticle要素に対して@include container();をします。さらに@include generate_helper_classes();も呼び出しましょう。これでクラスが生成されます。 場合によりますが、generate_helper_classesは特定要素に対して@includeしない方が使い勝手がいいと思います。

html

生成したクラスをhtml側でマークアップします。 col+カラム数のクラスでカラム幅を指定、push+プッシュ数のクラスでカラム位置を指定できます。 色々と組み合わせれば、かなり柔軟なレイアウトもできますよ!

Media Queryで切り替える

レスポンシブでいろいろ切り替えたい方は、それぞれのブレークポイント内で異なるmixin設定をすることになります。

Sass

これで、それぞれのブレークポイント内でカラム数が異なるグリッドが実現できます!

プラスαで気をつけたいところ

使っていて少し気になった部分があります。それがclearfixとbox-sizingです。 思った見た目にするには割と大事な部分だと思うので、一応…。

clearfixのmixin

Profound Gridにはclearfixのmixinが入っています。 が、overflow:hidden;タイプのclearfixなんですよね…。装飾の具合によっては使いにくい場合もあるかと思います。そんな時は、legacy-pie-clearfixというmixinも用意されています。
こちらはafter要素にclear:both;をかけているタイプなので、コンテナからはみ出して装飾したい場合などはこちらを使用した方がいいですよ!

box-sizingの設定

そのままだとpaddingの設定ではみ出したり何だりで、せっかくのグリッドがややこしいことになります。 なので、Compassでbox-sizeingを呼び出して、border-boxあたりをきちんと設定してあげるとよろしいかと思います。

まとめ

いかがだったでしょうか?
Foundationも好きなのですが、シンプルにグリッドだけ使いたい場合は、Profound Gridも柔軟で使い勝手が良かったです:) 覚えるmixinとかclassも少ないですし。物覚えが悪い私にぴったり。
最近はグリッドシステムがわんさかしていますが、どれを選べばいいか分からない方の選択肢の一つになればと思います!
それではまた!