第4章 高度な機能を覚えてSassを使いこなそう
4-5 制御構文で条件分岐や繰り返し処理を行う
@if を使って条件分岐をする
// 汎用的なclassを使うかどうか
$generalStyle: true;
@if $generalStyle {
.fl {
float: left;
}
.fr {
float: right;
}
}
$getStyle: 0;
@mixin style {
@if $getStyle == 1 {
margin: 0 0 30px;
padding: 15px;
background: #eee;
}
@else if $getStyle == 2 {
margin: 0 10px 15px;
padding: 20px 15px;
border: 2px solid #333;
}
@else {
margin: 0 0 10px;
}
}
.box {
@include style;
}
.box {
margin: 0 0 10px;
}
.box {
margin: 0 10px 15px;
padding: 20px 15px;
border: 2px solid #333;
}
@for で繰り返し処理を行う
@for $value from 1 through 3 {
.throughSample_#{$value} {
margin-bottom: 1px * $value;
}
}
@for $value from 1 to 3 {
.toSample_#{$value} {
margin-bottom: 1px * $value;
}
}
.throughSample_1 {
margin-bottom: 1px;
}
.throughSample_2 {
margin-bottom: 2px;
}
.throughSample_3 {
margin-bottom: 3px;
}
.toSample_1 {
margin-bottom: 1px;
}
.toSample_2 {
margin-bottom: 2px;
}
@for $value from 1 through 2 {
.mt_#{$value * 10} {
margin-top: 10px * $value;
}
.mb_#{$value * 10} {
margin-bottom: 10px * $value;
}
}
.mt_10 {
margin-top: 10px;
}
.mb_10 {
margin-bottom: 10px;
}
.mt_20 {
margin-top: 20px;
}
.mb_20 {
margin-bottom: 20px;
}
@while でより柔軟な繰り返し処理を行う
$value: 20;
@while $value > 0 {
.mt_#{$value} {
margin-top: #{$value}px
}
.mb_#{$value} {
margin-bottom: #{$value}px
}
$value: $value - 10;
}
$index: 300;
@while $index > 200 {
.box_#{$index} {
width: 2px * $index;
}
$index: $index - 32;
}
.box_300 {
width: 600px;
}
.box_268 {
width: 536px;
}
.box_236 {
width: 472px;
}
.box_204 {
width: 408px;
}
@each で配列の要素に対して処理を実行する
.body-top {
background-image: url(../img/bg_top.png);
}
.body-about {
background-image: url(../img/bg_about.png);
}
.body-company {
background-image: url(../img/bg_company.png);
}
.body-contact {
background-image: url(../img/bg_contact.png);
}
$nameList: top, about, company, contact;
@each $name in $nameList {
.body-#{$name} {
background-image: url(../img/bg_#{$name}.png);
}
}

