第4章 高度な機能を覚えてSassを使いこなそう

4-6 関数を使って様々な処理を実行する

数値の絶対値を取得する abs()

$margin: -15px;

section {
    margin-left: $margin;
    .item {
        float: left;
        width: 200px;
        margin-left: abs($margin);
    }
}
section {
  margin-left: -15px;
}
section .item {
  float: left;
  width: 200px;
  margin-left: 15px;
}

数値の小数点以下を四捨五入する round()

$width: 100%;

.boxA {
    width: $width / 6;
}
.boxB {
    width: round($width / 6);
}
.boxA {
  width: 16.66667%;
}
.boxB {
  width: 17%;
}

数値の小数点以下を切り上げる ceil()

$width: 100%;

.boxA {
    width: $width / 3;
}
.boxB {
    width: ceil($width / 3);
}
.boxA {
  width: 33.33333%;
}
.boxB {
  width: 34%;
}

数値の小数点以下を切り捨てる floor()

$width: 100%;

.boxA {
    width: $width / 6;
}
.boxB {
    width: floor($width / 6);
}
.boxA {
  width: 16.66667%;
}
.boxB {
  width: 16%;
}

16進数のRGB値に透明度を指定して、RGBA形式に変換できる rgba()

body {
    background: rgba(#6a5468, 0.3);
}
body {
  background: rgba(106, 84, 104, 0.3);
}
.box {
    background: rgba(red, .15);
}
.box {
  background: rgba(255, 0, 0, 0.15);
}

明るい色をカンタンに作れる lighten()

body {
    background: lighten(#000, 30%);
}
body {
  background: #4d4d4d;
}

暗い色をカンタンに作れる darken()

body {
    background: darken(#fff, 20%);
}
body {
  background: #cccccc;
}
$c: #888;

.boxA {
    background: lighten($c, 20%);
}
.boxB {
    background: darken($c, 20%);
}
.boxA {
  background: #cccccc;
}
.boxB {
  background: #666666;
}

2つのカラーコードの中間色を作れる mix()

body {
    background: mix(#000, #fff, 50%);
}
body {
  background: gray;
}
body {
    background: mix(rgba(000, 000, 000, .3), #fff, 50%);
}
body {
  background: rgba(217, 217, 217, 0.65);
}
$a: #000;
$b: #fff;

.boxA {
    background: mix($a, $b, 70%);
}
.boxB {
    background: mix($a, $b, 30%);
}
.boxA {
  background: #4d4d4d;
}
.boxB {
  background: #b2b2b2;
}

リストのN 番目の値を取得できる nth()

$nameList: top, about, company;
.item {
    background: url(#{nth($nameList, 2)}.png);
}
.item {
    background: url(about.png);
}

指定したキーの値を取得する map-get()

$colors: (
    twitter: #1b95e0,
    facebook: #3b5998,
);
.sns-twitter {
    color: map-get($colors, twitter);
}
.sns-twitter {
    color: #1b95e0;
}

セレクタを置換するselector-replace()

#{selector-replace(".item .text", ".text", ".image")} {
    float: left;
}
.item .image {
    float: left;
}