SCSS 語法使用方法(@mixin @extend @function)

SCSS 是用來開發CSS而發明的一種擴展語言,CSS 既非標準程式語言,也不是標記語言, 而是一種風格頁面語言(style sheet language),比起SCSS來說CSS在開發雖然不難但如果開發專案太過膨大,就會發現它很多贅詞,且不好閱讀。

標準CSS

p {
  color: red;
}

引用到頁面

<link href="styles/style.css" rel="stylesheet" type="text/css" />
<style>
p {
  color: red;
}
</style>
<p style="color:red;">text</p>

SCSS基本語法介紹

SCSS 一開始是叫做SASS,SASS去除了全部多餘的符號大誇號分號等等,階層用空白來判斷類似python,直觀起來比CSS要乾淨不少,最重要的是它是使用巢狀結構來編寫,巢狀結構使得SASS愈來愈多人使用,維護專案因為是不同人寫得常常要花很多時間了解前人再寫甚麼,才有辦法維護,CSS的繼承的特性很方便同時也能很汙染,巢狀結構的好用過就知道。

HTML

<div class="bg_box">
<p class="o1">test1</p>
<p class="o2">test2</p>
</div>

CSS

.bg_box .o1{
	color:#000;
}
.bg_box .o1:hover{
	color:#ccc;
}
.bg_box .o2{
	color:#0f0;
}

SCSS

.bg_box{
	.o1{
		color:#000;
		&:hover{
			color:#ccc;
		}
	}
	.o2{
		color:#0f0;
	}
}

SCSS 變數


$font_color: #333;
$bg_color: #eee;
$size: 10px;


.test {
    color: $font_color;
    background: $bg_color;
    width: $size;
    height: $size;
}

四則運算


$big-width: $width + $padding;
$subtraction-width: $width - $padding;
$multiplication-width: $width * $padding;
$column-width: $total-width / $columns;
$division-width: $width % $padding;

@mixin

@mixin font_color_01{
   color:#000;
}

// 使用混合
.element {
  @include font_color_01;
}

// 定義接受參數
@mixin font_color_02($font-size, $color) {
  font-size: $font-size;
  color: $color;
  line-height: 1.5;
}

.element {
  @include font_color_02(18px, #3498db);
}

@extend

前面加上”%”的樣式不會被編譯。

%font_color_01{
  font-weight: bold;
  color: red;
}

//引入
.my-class {
  @extend %font_color_01;
  background-color: yellow;
}

@function

SCSS內置了許多有用的內置函數 詳細參考:Sass: Built-In Modules (sass-lang.com)

@function fn_name($pa_1, $pa_2) {
	$all_num: $pa_1 + $pa_2;
  @return $all_num;
}

$num_all: fn_name(5, 3);

發表迴響