Asial Blog

Recruit! Asialで一緒に働きませんか?

WEBデザイナー/コーダーでも15分で導入出来るSCSS+Compass

カテゴリ :
フロントエンド(HTML5)
タグ :
Tech
CSS
SCSS
HTML5
Compass
こんにちは、鴨田です。

最近、チラホラとSCSSの記事を見かけるようになり、
どう考えても導入しない理由がないので、始めてみました。
もろもろのインストールから、コーディング開始まで15分もあれば十分ですので、
是非、みなさまも導入してみてください。

筆者、Windows環境なので、Windowsでの導入手順になります。



● Rubyのインストール


SCSS+Compassの動作(コンパイル)環境はRubyなので、
まずはRubyをインストールします。

RubyInstaller for Windows

2013年2月26日現在、最新版は2.0.0なので、こちらをインストールします。
2.0系列ですが、安定版なので、特に問題ありません。



ダウンロード後、インストーラーを起動して、そのまま進めていってください。

途中で一つだけ注意点があります。
保存先とPATHの設定という画面まで来たら、
Rubyの保存先の確認(Cドライブ直下に置くのが嫌な場合は変更してください)と
選択項目中段の「Rubyの実行ファイルへ環境変数PATHを設定する」だけは
チェックするのを忘れないでください。



作業を続けていくと、あっという間にRubyのインストールは完了します。
では、ちゃんとインストールできたかどうかの確認を行います。

「Windowsボタン+R」もしくは「スタート→プログラムとファイルの検索」で、
"cmd"と打ち込んで、Enterしてください。



コマンドプロンプトが起動したら、下記コマンドを打ち込んで、Enterキーを押します。

  1. ruby -v
下記、画面のように表示されれば、Rubyがインストールされています。



続けて、Rubyのパッケージ管理システムが最新かどうかのチェックを行います。

  1. gem update --system
最新の状態であれば、下記のように表示されます。



最新でなくても、上記コマンドで最新になりますので、Rubyのインストールはひとまず完了です。
SassとCompassのインストールに移りますが、そのままコマンドプロンプトを使用するので、
ウィンドウは閉じずにいてください。



● SassとCompassインストール



そういえば、ここまで何の説明もなく来てしまいましたが、
SassとかSCSSとかComapssって何?という方もいるかと思いますので、
ちょっとだけ説明をします。

Sassはコンパイル(変換)を行うと、普通のCSSになる言語で、
ミックスイン(機能テンプレートのようなもの?)や変数を扱えたりしますが、
CSSとは似て非なるものなので、少し扱いづらい言語です。

そこでSassの新しい形として誕生したのがSCSSです。
SCSSは、CSSを拡張した文法なので、
(実際のところ、CSSをそのまま書いても問題ない)
学習コストがほぼ必要ない上に、Sassの機能をそのまま使えます。

では、Compassは何なのかというと、
ミックスインのライブラリのようなものでしょうか。

おそらく使っている内に分かってくるのではないかと思いますので、
先に進みましょう。

Sassをインストールします。

  1. gem install sass


Compassをインストールします。

  1. gem install compass


これでSassとCompassのインストールが完了しました。



● Dreamweaverの設定



Dreamweaverを使用していない人は無視して、次の章飛んでください。

Dreamweaverのデフォルト設定では、.scssファイルを正常に認識しないため、
いくつか設定変更を行う必要があります。

■scssファイルをコードビューで開く

ファイル→環境設定→ファイルタイプ/エディタ
「コードビューで開く」に、半角スペース区切りで、".scss"を追加してください。



■scssファイルにコードヒントを適用

Windows7系であれば、下記ファイルをバックアップした上で、編集してください。

C:\Program Files (x86)\Adobe\Adobe Dreamweaver (CS4)\configuration\DocumentTypes
MMDocumentTypes.xml

見つからなければ、Cドライブごと「MMDocumentTypes.xml」で検索してください。

変更前
  1. <documenttype id="CSS" internaltype="Text" winfileextension="css" macfileextension="css" file="Default.css" writebyteordermark="false">

変更後
  1. <documenttype id="CSS" internaltype="Text" winfileextension="css,scss" macfileextension="css,scss" file="Default.css" writebyteordermark="false">
Dreamweaverの設定は以上です。



● プロジェクトの設定



プロジェクトフォルダをどこか好きなところに作成してください。
例えば、構成を下記のようにします。

Project/
├css/
├_scss/
├js/
├images/
├config.rb
├compile.bat
└index.html

そして、そのフォルダ直下に"config.rb"というテキストファイルを作成します。
中身は、プロジェクト構成に沿って、下記のようにします。

  1. http_path = "/"
  2. css_dir = "css"
  3. sass_dir = "_scss"
  4. images_dir = "images"
  5. javascripts_dir = "js"
  6. output_style = :expanded
  7. line_comments = false
続いて、フォルダ直下に"compile.bat"というテキストファイルを作成します。
内容は、下記一行です。

  1. compass watch
SCSSファイルは、修正する度にコンパイルする必要があるので、
バッチ処理化することで、保存される度にコンパイルし直すと便利です。
そのためのファイルになります。

作成し終えたら、"compile.bat"ファイルを起動します。
作業開始前に、必ず起動するようにしましょう。





● SCSSファイルの作成



"_scss"フォルダの中に、test.scssファイルを作成してください。
SCSSでどんなことが出来るのか、試してみましょう。

test.scss
  1. @import "compass";
  2.  
  3. /* reset */
  4. @import "compass/reset";
  5.  
  6. /* variable */
  7. $h1_color: #123456;
  8.  
  9. h1 {
  10.   color: $h1_color;
  11. }
  12.  
  13. /* mixin */
  14.  
  15. p {
  16.   @include box-shadow(1px 1px 0 #ccc);
  17. }
  18.  
  19. /* nest */
  20.  
  21. section {
  22.   background: #000;
  23.   nav {
  24.     background: #333;
  25.   }
  26. }
  27.  
  28. /* extend */
  29.  
  30. h2 {
  31.   height: 60px;
  32.   line-height: 60px;
  33.   font-size: 16px;
  34. }
  35.  
  36. h3 {
  37.   @extend h2;
  38.   font-size: 14px;
  39.   text-align: center;
  40. }

出力されるtest.css
  1. /* reset */
  2. html, body, div, span, applet, object, iframe,
  3. h1, h2, h3, h3, h4, h5, h6, p, blockquote, pre,
  4. a, abbr, acronym, address, big, cite, code,
  5. del, dfn, em, img, ins, kbd, q, s, samp,
  6. small, strike, strong, sub, sup, tt, var,
  7. b, u, i, center,
  8. dl, dt, dd, ol, ul, li,
  9. fieldset, form, label, legend,
  10. table, caption, tbody, tfoot, thead, tr, th, td,
  11. article, aside, canvas, details, embed,
  12. figure, figcaption, footer, header, hgroup,
  13. menu, nav, output, ruby, section, summary,
  14. time, mark, audio, video {
  15.   margin: 0;
  16.   padding: 0;
  17.   border: 0;
  18.   font: inherit;
  19.   font-size: 100%;
  20.   vertical-align: baseline;
  21. }
  22.  
  23. html {
  24.   line-height: 1;
  25. }
  26.  
  27. ol, ul {
  28.   list-style: none;
  29. }
  30.  
  31. table {
  32.   border-collapse: collapse;
  33.   border-spacing: 0;
  34. }
  35.  
  36. caption, th, td {
  37.   text-align: left;
  38.   font-weight: normal;
  39.   vertical-align: middle;
  40. }
  41.  
  42. q, blockquote {
  43.   quotes: none;
  44. }
  45. q:before, q:after, blockquote:before, blockquote:after {
  46.   content: "";
  47.   content: none;
  48. }
  49.  
  50. a img {
  51.   border: none;
  52. }
  53.  
  54. article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
  55.   display: block;
  56. }
  57.  
  58. /* variable */
  59. h1 {
  60.   color: #123456;
  61. }
  62.  
  63. /* mixin */
  64. p {
  65.   -webkit-box-shadow: 1px 1px 0 #cccccc;
  66.   -moz-box-shadow: 1px 1px 0 #cccccc;
  67.   box-shadow: 1px 1px 0 #cccccc;
  68. }
  69.  
  70. /* nest */
  71. section {
  72.   background: #000;
  73. }
  74. section nav {
  75.   background: #333;
  76. }
  77.  
  78. /* extend */
  79. h2, h3 {
  80.   height: 60px;
  81.   line-height: 60px;
  82.   font-size: 16px;
  83. }
  84.  
  85. h3 {
  86.   font-size: 14px;
  87.   text-align: center;
  88. }



● SCSSファイルの説明



■Compassのインポート

  1. @import "compass";
Compassの機能を使う場合、必ず付けておいてください。

■reset.cssのインポート

  1. /* reset */
  2. @import "compass/reset";
コンパスの機能の一つになりますが、
これだけでreset.cssのインポートをすることが出来ます。

■変数

scss
  1. /* variable */
  2. $h1_color: #123456;
  3.  
  4. h1 {
  5.   color: $h1_color;
  6. }

css
  1. /* variable */
  2. h1 {
  3.   color: #123456;
  4. }
変数機能です。
変数名には$を付けて、:以降が変数になります。
CSSライクな書き方ですね。

■ミックスイン

  1. /* mixin */
  2. p {
  3.   @include box-shadow(1px 1px 0 #ccc);
  4. }

  1. /* mixin */
  2. p {
  3.   -webkit-box-shadow: 1px 1px 0 #cccccc;
  4.   -moz-box-shadow: 1px 1px 0 #cccccc;
  5.   box-shadow: 1px 1px 0 #cccccc;
  6. }
Compassで用意されているミックスインの一つで、
box-shadowの各ベンダープリフィックスが一行で書けます。

■ネスト

  1. /* nest */
  2. section {
  3.   background: #000;
  4.   nav {
  5.     background: #333;
  6.   }
  7. }

  1. /* nest */
  2. section {
  3.   background: #000;
  4. }
  5. section nav {
  6.   background: #333;
  7. }
SCSSのネスト表現です。
入れ子に出来るため、コード量が減ります。

■継承

  1. /* extend */
  2. h2 {
  3.   height: 60px;
  4.   line-height: 60px;
  5.   font-size: 16px;
  6. }
  7.  
  8. h3 {
  9.   @extend h2;
  10.   font-size: 14px;
  11.   text-align: center;
  12. }

  1. /* extend */
  2. h2, h3 {
  3.   height: 60px;
  4.   line-height: 60px;
  5.   font-size: 16px;
  6. }
  7.  
  8. h3 {
  9.   font-size: 14px;
  10.   text-align: center;
  11. }
タグ名やクラス名で、要素の継承をすることが出来ます。
冗長になりがちなコードの整理が可能です。



以上、駆け足での説明となってしまいましたが、
SCSS+Compassの導入から使い方の概要になります。

今回のブログ作成にあたり、下記参照させていただきました。

コーダー必見、SCSS・Compassで開発効率アップ|Sublime Text 2でコンパイル編

Sass を使うなら、Compass も使うと便利

SassとDreamweaverのコードヒントでCSSをさらに効率的に

SCSSとCompassの使い方に関しては、下記記事に詳しいです。

CSSの常識が変わる!「Compass」、基礎から応用まで!

これを機会に、是非導入をオススメします。