github地址:https://github.com/lily1010/sass/tree/master/course02 用到的sass語法是: sass --watch test.scss:test.css --style compact --style expanded 如下圖: 1 類名嵌 ...
github地址:https://github.com/lily1010/sass/tree/master/course02
用到的sass語法是:
sass --watch test.scss:test.css --style compact --style expanded
如下圖:
1 類名嵌套
test.scss內容是:
.test1 {
font-size: .15rem;
p{
color: #333;
.test11 {
width: 3px;
}
}
}
編譯成test.css內容是:
.test1 {
font-size: .15rem;
}
.test1 p {
color: #333;
}
.test1 p .test11 {
width: 3px;
}
2 屬性嵌套
test.scss內容是:
.test2 {
margin: {
left: 10px;
right: 20px;
}
}
.test21 {
margin: 0 0 0 0{ /*命名空間也可以有自己的屬性*/
left: 10px;
right: 20px;
}
}
編譯成test.css內容是:
.test2 {
margin-left: 10px;
margin-right: 20px;
}
.test21 {
margin: 0 0 0 0;
margin-left: 10px;
margin-right: 20px;
}
3 引用父選擇器和精確定位父選擇器和反向成為父選擇器
test.scss內容是:
.a {
font-size: .15rem;
&:hover { //引用父選擇器
color: red;
}
.ll { //精確定位父選擇器
color: black;
&:hover {
height: 20px;
}
}
.test3 & { //反向成為父選擇器
width: 10px;
}
}
編譯成test.css內容是:
.a {
font-size: .15rem;
}
.a:hover {
color: red;
}
.a .ll {
color: black;
}
.a .ll:hover {
height: 20px;
}
.test3 .a {
width: 10px;
}
4 全局變數
test.scss內容是:
/*方法一*/
$color: red;
.test4 {
color: $color;
}
/*方法二*/
.test41 {
$red: red !global;
color: $red;
}
.test42 {
color: $red;
}
編譯成test.css內容是:
/*方法一*/
.test4 {
color: red;
}
/*方法二*/
.test41 {
color: red;
}
.test42 {
color: red;
}
5 帶引號的字元串將被編譯為不帶引號的字元串
test.scss內容是:
@mixin test5($left) { //此處$不可去掉
border-#{$left}:1px #000 solid;
left: 20px;
top: 10px;
}
.lili2 {
@include test5("left");
}
編譯成test.css內容是:
.lili2 {
border-left: 1px #000 solid;
left: 20px;
top: 10px;
}
6 精講除法
test.scss內容是:
/*需要註意:Sass 數學函數在算術運算期間會保留單位
*可以將/解析為除法三種情況
*(1)如果該值,或值的任何部分,存儲在一個變數中或通過函數返回。
* (2)如果該值是由括弧括起來的,除非這些括弧是在一個列表(list)外部,並且值是括弧內部。
* (3)如果該值被用作另一個算術表達式的一部分。
*/
p {
font-size: 10px/2px; // 原生的CSS,不作為除法
$width: 100px;
width: $width/2;
height: (100px/2);
margin-left: 5px + 8px/2px;
}
編譯成test.css內容是:
p {
font-size: 10px/2px;
width: 50px;
height: 50px;
margin-left: 9px;
}
7 顏色運算
test.scss內容是:
.test7 {
color: #302010 + #333333;
}
.test71 {
color: #010101 * 2;
}
.test72 {
color: rgba(0,0,0,0.3) + rgba(1,1,1,0.3); //必須具有相同的alpha值,才能進行顏色運算,但是alpha不變
}
/*如果想讓alpha值變化,則需要計算函數*/
.test73 {
color: opacify(rgba(0,0,0,0.3),0.3);
}
編譯成test.css內容是:
.test7 {
color: #635343;
}
.test71 {
color: #020202;
}
.test72 {
color: rgba(1, 1, 1, 0.3);
}
/*如果想讓alpha值變化,則需要計算函數*/
.test73 {
color: rgba(0, 0, 0, 0.6);
}
8 字元串運算
test.scss內容是:
.test8 {
width: 2px + 3px;
}
.test81::after { //帶引號字元串和不帶引號字元串,誰在前面就以誰為主
font-family: "arial" + black;
content: lala + "lili";
}
$value: 20; //在字元串裡面插入動態值
.test82::before {
content: "wo ke yi #{$value} lili";
}
編譯成test.css內容是:
.test8 {
width: 5px;
}
.test81::after {
font-family: "arialblack";
content: lalalili;
}
.test82::before {
content: "wo ke yi 20 lili";
}
9 圓括弧提升優先順序
test.scss內容是:
.test9 {
width: 1px + (2px * 3);
}
編譯成test.css內容是:
.test9 {
width: 7px;
}
10 預設變數 !default
test.scss內容是:
/*如果分配給變數的值後面添加了!default標誌 ,這意味著該變數如果已經賦值,那麼它不會被重新賦值,但是,如果它尚未賦值,那麼它會被賦予新的給定值。*/
$color: red;
$color: pink !default;
.test10 {
color: $color;
}
編譯成test.css內容是:
.test10 {
color: red;
}