技術めも

Sass / SCSS 入門

http://dotinstall.com/lessons/basic_sass

変換

sass scss/main.scss:css/main.css
sass --style expanded scss/main.scss:css/main.css

フォルダ監視
sass --style expanded --watch scss:css

基本・変数(数値、文字列、真偽、色、リスト:配列)

$debugMode: true;
$x : 10;

#content_if {
   @if $debugMode == true {
       color: red;
   } @else {
       color: green;
   }
   p {
       @if $x > 20 {
           color: yellow;
       }
   }
}

/* comment */
// comment (変換後非表示)

$beseFontSize: 14px; // → lighten darken etc
$imgDir: "../img/";
$balndColor: red;

#main {
   width: 90%;
   background: url($imgDir + "bg.png");
   p {
       color: lighten($balndColor, 30%);
       font-size: $beseFontSize;
       background: url("#{$imgDir}bg.png");
       .sub {
           font-size: $beseFontSize - 2px;
       }
       a {
           text-descration: none;
           &:hover {
               font-wight: bold;
           }
       }
   }
}

関数

$totalWidth: 940px;
$columnCount: 5;

@function getColumWidth($width, $count) {
   $padding: 10px; // ローカル変数
   $columnWith: floor(($width - ($padding * ($count - 1))) / $count);
   @debug $columnWith; // コンソール表示デバッグ

   @return $columnWith;
}

.grid {
   float: left;
   width: getColumWidth($totalWidth, $columnCount);
}

for 文

$animals: cat, dog, tiger;

@each $animal in $animals {
   .#{$animal}-icon { background: url("#{$animal}.png"); }
}

@each $animal in cat, dog, tiger {
   .#{$animal}-icon2 { background: url("#{$animal}.png"); }
}

@for $i from 10 through 13 {
    .fs#{$i} { font-size: #{$i}px; }
}

$i: 10;
@while $i <=13 {
   .fss#{$i} { font-size: #{$i}px; }
   $i: $i + 1;
}

mixin

設定をまとめて管理

@mixin round2($radius: 5px) { // 引数+デフォルト値
   border-radius: $radius;
}

.label2 {
   font-size: 12px;
   @include round2(7px);
}

@mixin round {
   border-radius: 4px;
}

.label {
   font-size: 12px;
   @include round;
}

extend 継承

.msg {
   font-size: 12px;
   font-weight: bold;
   padding: 2px 4px;
   color: white;
}

.errorMsg {
   @extend .msg;
   background: red;
}

.warnigMsg {
   @extend .msg;
   background: orange;
}

ファイル分割

ファイル名
_functions.scss

@import "functions";