一文學會sass常用語法

2021-10-03 20:35:30 字數 4591 閱讀 4418

專案一直用的scss,但是一直沒有好好學些sass的用法,一直用的只有定義變數和選擇器巢狀等寥寥幾個功能(捂臉).後來仔細看了一下sass中文網,感覺自己錯過了乙個世界…

2.1 屬性巢狀

帶有相同字首的css屬性可以用巢狀的規則書寫

.text-item

text:

}// 也可以給字首本身新增屬性

.text-container

}

2.2 插值語句

使用${}可以在選擇器或屬性名中使用變數

例如

$textvar:item

$widthname:width

.text-#

:10px;

}

在屬性值也可以使用#{},但是沒有直接使用變數方便,但是可以用在一些特殊的場合,如阻止數值運算等.

2.3 數值運算

包括(+, -, *, /, %)

.text-item

編譯為

.text-item

由於/本身在css中就有含義,因為只有以下幾種情況/會被當做除法進行處理

值是算數表示式的一部分,如1px+10px/2px;

運算表示式用()包裹,如(10px/2px);

運算表示式中使用了變數,如$width/2

如果使用了變數,但是仍然希望不進行運算處理,可以使用#{},如

# / 2

# / #

2.4 @media

@meida在原來css的功能上擴充套件了可以在選擇器中巢狀書寫@media,不會打亂正常的書寫流程

$mediadevice

:screen;

.text-item

}

編譯後

.text-item

@media screen

}

2.5 @extend

@extend可以在乙個選擇器上延伸拓展出其他選擇器的樣式

例如

.text1

.text2

.text-item

編譯為

.text1, .text-item

.text2, .text-item

.text-item

有時候,我們有些樣式是專門為了@extend使用的,為了不增加編譯之後**的體積,可以用%selector表示

%text

.text-item

編譯後

.text-item

.text-item

如果在@media中使用@extend,需要注意些東西,@extend的選擇器,必須也在同樣的@media中,但是允許分開寫

/* 可以 */

@media screen

.text-item

}/* 報錯 */

%text

@media screen

}/* 可以 */

@media screen

}@media screen

}

2.6 控制指令

1.@if

@if指令後接乙個判斷表示式,如果表示式不為false或者null,則編譯後面的{}中的內容

$text

:text1;

.text-item

@else if $text==text1

@else

}

編譯為

.text-item

2.@for

@for 指令可以在限制的範圍內重複輸出格式,每次按要求(變數的值)對輸出結果做出變動,使用格式

@for $var from < start > through < end > : 包含start和end

@for $var from < start > to < end > : 包含start,不包含end

例如

@for $i from 1 through 3

px;}

}

編譯

.m-t-4

.m-t-8

/* 如果將through改為to,將不包含下面樣式 */

.m-t-12

3.@each

@each 可以用於列表的迴圈輸出,表示式為 @each $i in < list >,如下

$animals

:bird,dog,cat;

@each $item in $animals

}

編譯之後

.item-bird

.item-dog

.item-cat

也可以一次迴圈多個list,迴圈規則如下

@each $item,$index in (bird,1),(dog,2)

}

也可以迴圈maplist

$maplist

:(1:dog,2:cat,3:bird)

;@each $index,$item in $maplist

}

2.7 混合指令

1.mixin

可以使用mixin定義重複使用的樣式,避免重複操作,使用是通過@include引入,用法如下,支援大部分sass語法

@mixin errtext

.text-item

/* 編譯之後 */

.text-item

2.引數傳入

很好理解,就是在使用@include引用的時候通過傳入特定的引數,生成相應的樣式

@mixin

btnstyle

($color,$width,$lineheight)

;.text-btn

/* 編譯之後 */

.text-btn

當然了,在mixin上可以使用預設值(使用預設值的引數最好放在引數的後面)

@mixin

btnstyle

($color

:red,$width

:200px,$lineheight

:20px)

;.text-btn

/* 編譯之後 */

.text-btn

也可以使用指定變數來傳參

@mixin

btnstyle

($color

:red,$width

:200px,$lineheight

:20px)

;.text-btn

/* 編譯之後 */

.text-btn

如果存在未知數量的引數,如box-shadow的引數,可以使用引數變數...的定義方式,表示將傳入的引數作為list處理,這裡跟es6中的擴充套件運算子...很像.

@mixin

boxshadow

($shadow...)

.text-item

/* 編譯之後 */

.text-item

也可以使用...使變數展開

@mixin

btnstyle

($color,$width,$height)

$style

:(red,100px,200px)

;.text-btn

/* 編譯之後 */

.text-btn

2.8 函式

函式的存在是為了減少重複的表示式運算,函式的定義方式如下,引數的使用方法和mixin一樣

@function functionname(

$var1

...)

用法如下

@function

getnum

($num)

.text-item

px;}

/* 編譯之後 */

.text-item

一文學會Rust

rust是什麼 rust 是乙個系統程式語言,它注重三個方面 安全,速度和併發性。特徵 1.沒有垃圾 機制,沒有執行時,效率超過c 直逼c語言 2.記憶體安全,併發安全,沒有空指標 3.極其豐富的生態 它是如何做到這些的?編譯時保證和對記憶體生命週期的明確控制。讓我們來談談rust中最重要的概念 所...

qmake常用語法一

關鍵字 注釋 包含檔案 平台巨集 作用域 一 注釋 用 注釋,表示到行尾均為注釋。二 include 包含別的檔案,例如 include xx.pri。類似於c 的 include。三 平台巨集 win32 macx unix linux g 等,分別對應於windows mac unix linu...

makefile常用語法講解一

1 make 是乙個解釋 makefile 中指令的命令工具。make 工具最主要也是最基本的功能就是通過 makefile 檔案來描述源程式之間的相互關係並自動維護編譯工作。而 makefile 檔案需要按照某種語法進行編寫,檔案中需要說明如何編譯各個原始檔並連線生成可執行檔案,並要求定義原始檔之...