Web
2014年7月19日 (土) 掲載
メディアクエリの書き方 [sass]
最近のWebデザインではメディアクエリを使用したレスポンシブデザインが必須となっています。sassでももちろんメディアクエリはサポートされています。sassならではの拡張がされているので複雑になりがちなメディアクエリもスッキリと書けるようになります。メディアクエリの書き方
通常のcssでは次のように書くのが一般的でしょう。
.node-page {
width: 960px;
}
@media only screen and (max-width: 360px) {
.node-page {
width: 100%;
}
}
sassでこのように書いてもいいのですが、もっとわかりやすい書き方があります。
.node-page {
width: 960px; // デフォルトの幅
@media only screen and (max-width: 360px) {
width: 100%; // モバイル時の幅
}
}
オリジナルのスタイルと画面が小さいときのスタイルをネストして整理できるので、対応関係を素直に記述することができます。
この書き方はセレクタ単位でスタイルをまとめるのに適しています。しかし場合によっては、画面サイズ毎にスタイルを整理したいこともあるでしょう。そのようなときには普通のcssと同じようにメディアクエリを書いてもまったく問題はありません。
画面サイズを変数で指定する
メディアクエリのパラメータには変数を指定することができます。そして変数には単なる数値だけでなく、文字列を指定することもできます。
$phone: “only screen and (max-width: 360px)”;
$tablet: “only screen and (max-width: 768px)”;
.node-page {
width: 960px;
@media #{$phone} {
width: 360px;
}
@media #{$tablet} {
width: 768px;
}
}
この書き方だと可読性があがるうえ、ブレークポイントの値を変更したいとき、変数の値を変えるだけですべてのメディアクエリを変更することができます。
なお変数を参照するとき #{$phone} と書いていることに注意してください。(プレースホルダーと言います。)プロパティの値として変数を参照するのではないので、普通に$phoneと書くとエラーになってしまいます。
Web開発のとき統合開発環境としてEclipse(あるいはAptanaStudio)を使用している人は多いでしょう。ここではEclipseのビルドシステムを使ってcompassをコンパイルする方法を説明します。
cssでは背景に画像を指定することが良くあります。普通はbackground-image: url(../images/bg.png); のように書くことでしょう。しかしこの方法ではフォルダレイアウトを変更すると、すべての指定を書き換えなければなりませんし、CMSではこのような相対指定が使えない場合もあります。このような不便を解消するためにcompassでは画像を特別な方法であつかいます。
横方向のレイアウト整合性をとるのがBlueprintなら、縦方向(行間)をコントロールするのがVertical Rhythmです。Blueprintにも行間コントロールの機能はあるのですがあまり使いやすいとは言えません。ここではcompassコアに含まれるVertical Rhythmの使い方を説明します。
compassの魅力のひとつは豊富で実績のあるミックスインが使えることです。ここではcompassコアに含まれるミックスインの概要を紹介します。
sassは従来のcssと互換性のあるスタイルシート言語です。実際、cssファイルの拡張子をscssに変えただけでも立派なsassソースファイルであり、コンパイルをすることができます。なのでcssについての知識があればsassは簡単に覚えることができます。ここではその概要を説明します。
compassを利用するにはまずcompassコンパイラをインストールする必要があります。ここではWindows環境にcompassをインストールする方法と、基本的な利用方法について説明をします。
Webページを作成するとき、作業の半分はグラフィックの制作に、残りの半分はCSSの制作に費やされるでしょう。CSSの制作環境は数年前と比べて格段に良くなっているとはいえ、CSSという言語自体はそれほど進歩していません。特にDrupalなどのCMSプロジェクトではセレクタの記述がどんどん長くなる傾向にあり、そのためcssコードの共有や保守がますます難しくなってきています。