勉強会にあたって、下記の書籍を購入しました。
Sassを書いてみたい方にとてもオススメです。
Web制作者のためのSassの教科書
サポートサイトで書籍の正誤表やサンプルソースを見られます→http://book.scss.jp
さて、勉強会のために、下記のページを作りました。
http://www.ccc-labo.net/_demo/sass_lesson1/local/
このページを作る際に書いたSassを例にしてSassの基本的な書き方を確認していきました。
なお、コンパイル結果を確認するために、ウェブツールを使いました。
SassMeister→http://www.sassmeister.com
最初に、Sassの使い所がイマイチない、という話をした。そもそもCSSを書くときの管理方についても明文化できていないのに、Sassを使って効率化、という段階にない、とか、自分がSassで書くと他の人に引継ぎができないとか。そもそも、プログラムアレルギーが強くて馴染めない、などなど。
これらは私がSassを遠ざけた理由そのままだったので、とても納得なのだが、改めてSassをいろいろいじってみると・・・・・・まあ、圧倒的に便利な部分がある。例えば変数とかは使いたくてたまらない。コンパイルとか、環境を作ることがまず大変ですが。。。(苦労しました)
この苦労と、書き方を覚える労力をかけるのと、今まで通りCSSをサクサク書くのと効率としてはトントンかもなあ、という思いがSass導入を遠ざけていたわけです(個人的に)。
しかし、勉強会を機に、一旦コンパイルする環境まで作ってしまえば、逆にこう思った。
「Sassのファイル内でいつも通りCSS書いたらそれは単純にCSSとして書き出されるだけなんだし、Sassの便利なところ、書ける!と思うことだけ取り入れたらええやん。」
と、いうわけなので、楽しいです、Sass。
紹介した書き方が下記です。カキカキ。
入れ子
.entry-header { .entry-title { font-weight: 300; text-align: center; } } .main-navigation { ul { padding: 0; margin: 0; text-align: center; li { display: inline-block; margin-right: 10px; line-height: 1; a { display: block; padding: 7px 10px; background-color: #333; color: #fff; text-decoration: none; transition: opacity 0.5s ease-in; opacity: 1; &:hover { opacity: 0.6; transition: opacity 0.5s ease-in; } } &:last-child { margin-right: 0; } } } }
変数
$window_medium : 600px; $window_large : 1200px; $keycolor : #007099;
計算と繰り返し
@for関数を使って、繰り返しの処理を書く。
$grid_margin : 2%;/*単位は%*/ $grid_width : ( 100 - $grid_margin * 5 ) / 6; @for $i from 1 through 6 { .grid-small-#{$i} { width: ($grid_margin * ($i - 1) + $grid_width * $i); } }
色の計算
キーカラーから派生させた背景色を作る。こうするとトーン配色を守った色使いが考えやすい。
$keycolor : #007099; .main-visual { text-align: center; background-color: mix($keycolor,#EEE, 10%); padding-top: 40px; margin-bottom: 30px; }
@extendの例
同じ処理をまとめるために使う。ただ、後に紹介する@mixinの方がSassで書くものとコンパイルの結果の違和感が少ないよね、という意見もあった。(私もちょっと苦手)
%btnBase { border-radius:3px; background-color: #333; color:#fff; } .btn { @extend %btnBase; padding: 9px; } .item { @extend .btn; margin-left:10px; } .item2 { @extend %btnBase; margin-left:10px; padding: 4px; }
ミックスイン
@mixin関数。これは本当に便利だ。
@include kadomaru(); のカッコ内には角丸のサイズを入れることで、変更ができるので試してみてほしい。
例 @include kadomaru(10px);
@mixin iblockHack { display: inline-block; *display: inline; *zoom: 1; } @mixin kadomaru($value: 4px) { -moz-border-radius: $value; -webkit-border-radius: $value; border-radius: $value; } li { @include iblockHack; margin-right: 10px; line-height: 1; a { display: block; padding: 7px 10px; @include kadomaru(); } }
ミックスイン複数の値
複数の値をとることも可能。角丸のサイズとパディングの値を変数にしておくと、これひとつで角丸のあるボタンやボックスの調整がたった1行書くだけでできるようになる。
@mixin kadomaruBox($value1: 4px,$value2: 10px) { -moz-border-radius: $value1; -webkit-border-radius: $value1; border-radius: $value1; padding: $value2; display: block; } a { @include kadomaruBox(10px,30px); }
以下、勉強会の時に出てきた質問などについて少し調べておいたので、書き留めておきます。
コンパイルされたCSSの改行とかタブの入り方が気にくわない、修正したい!
こんな記事見つけました。やっぱり思っている人はいた。
http://www.ysakmrkm.com/2012/10/customize_output_format_compiled_by_sass.html
根本的な解決にならない、って書いてあるけど、どうじゃろ、ruby詳しい人に聞けばいいのかな・・・。
Macでの環境構築について
El Captainになって、OSのシステム系のファイルにルート権限でもアクセスできなくなったそうな(すみません、細かいことはよくわかっていません)。
で、Macは標準でRubyが入っているからそっち使ってもいいよ、という感じでやってみようとしたんですが、失敗しまくり。色々やりすぎて何をどうしたのかあまり覚えてもいない・・・・・。
この辺りが参考になる気がします。
https://teratail.com/questions/23280
compassを使う
勉強会の際に使っていたMacBookではできなかったのですが、自宅のiMacでは普通に使えたので、頭を抱えています。バージョンとかも変わらないのですが・・。
ただ、iMacの環境では、compass watchがなんだかうまくいってない風・・・・。謎です。。。。。
これについてはまた何かわかったら書きます。