摘要:編譯之后結果混合作用繼承復用定義使用傳參可以對混合進行傳遞參數,和設置默認值。占用中的位置,使用其樣式內容。在模式下,進行色彩運算時,要求通明度必須保持一致,否則無法進行運算。
Sass 是一個CSS 的擴展,在語法CSS語法的基礎上,增加變量,嵌套規則, 混合,導入,函數等功能
對CSS進行預處理的“中間語言”
.sass ,.scss
scss是對css的一種拓展,跟css很像,是開發中最常用的模式。
Sass從第三代開始,放棄了縮進風格,并且完全向下兼容普通的CSS代碼。被稱為scss
Node環境
sass app.sass app.css sass --watch app.sass:app.css // 自動編譯更新CSS // 用來Sass命令來監視某個Sass文件的改動 sass --style expanded app.scss app.css // 編譯的CSS格式更像是手寫的CSS樣式
工程化工具
Gulp插件:gulp-sass
var gulp = require("gulp"), sass = require("gulp-sass"), perfixer = require("gulp-autoprefixer"), minifyCss = require("gulp-minify-css"); // 編譯Sass 并添加CSS前綴 ,壓縮 gulp.task("sass", function () { gulp.src("*.sass") .pipe(sass()) // 編譯 .pipe(perfixer()) // 自動改名 .pipe(minifyCss()) // 壓縮 .pipe(gulp.dest("dist")); }); gulp.task("default", ["sass"]);
Sass編譯后亂碼,在Sass文件第一行添加 @charset "UTF-8"。再進行編譯。
變量在SASS中是一個塊級作用域,在塊內部定義的變量,在外部訪問不到,只能在內部訪問。
定義:
$w: 100px;
使用:
width: $w;
在SASS中,可以通過&符號,在父選擇器內部訪問父選擇器。
經常使用在偽類元素或偽樣式中
div { width: $w; height: $h; background: cyan; &:hover { background: khaki; } }屬性嵌套
Sass允許CSS屬性嵌套,通常這種特性應用于復合屬性。對屬性嵌套,編譯的時候,這些屬性會根據嵌套層級來編譯結果。
$w: 100px; div { width: $w; height: $w; background { color: pink; } border: { style: solid; top: { width: 5px; color: tan; } left: { width: 2px; color: khaki; } } }
編譯之后結果:
div { width: 100px; height: 100px; border-style: solid; border-top-width: 5px; border-top-color: tan; border-left-width: 2px; border-left-color: khaki; } div background { color: pink; }混合
作用:繼承復用
定義:@mixin names {}
使用: @include names
$w: 200px; $h: 100px; $color: cyan; @mixin sayBor { width: $w; height: $h; background: $color; } .head { @include sayBor; }傳參
可以對混合進行傳遞參數,和設置默認值。
@mixin sayBor($w: 300) { width: $w; height: $h; background: $color; } .head { @include sayBor(500); }多參數的使用
通過...語法實現
@mixin sayBor( $shadow...) { width: $w; height: $h; background: $color; box-shadow: $shadow; } .head { @include sayBor(2px 2px 10px red); }繼承
實現對 class, 元素, id 或者自定義元素名稱樣式繼承。
div { width: 100px; } myDiv { border: 1px solid tan; } #demo { height: 200px; } .app { background: tan; } p { @extend div; @extend myDiv; @extend #demo; @extend .app; }mixin與作用域
在sass中,定義在作用域內部的混合,在外部是無法訪問的,只能在作用域內部訪問
在sass中,定義在作用域內部的繼承,在作用域外部是可以訪問的,并且會繼承整個文件中所有的選擇器的樣式,不論該選擇器寫在文件任何位置。編譯之后會帶有繼承的層級選擇器。
span { .app { background: tan; } } p { @extend .app; // 以繼承的為父級 }
編譯之后
span .app, span p { background: tan; }
比較Less 的Mixin 和 SASS的繼承:
Less中定義在作用域內部的混合,在作用域外部是不能直接訪問。
SASS中定義在文件任何位置的繼承,都可以直接訪問。
比較Less的方法 和 SASS的Mixin
Less中定義在作用域內部的方法,在作用域外部不能直接訪問,必須通過命名空間訪問。
SASS定義在作用域內部的混合,只能在作用域內部訪問,外部無法訪問。
編譯之后,樣式會刪除。占用SASS中的位置,使用其樣式內容。
占位符,應用于元素選擇器和自定義元素選擇器。
%div { width: 100px; } %myDiv { border: 1px solid tan; } #demo { height: 200px; } .app { background: tan; } p { @extend %div; @extend %myDiv; @extend #demo; @extend .app; }
編譯結果:
p { width: 100px; } p { border: 1px solid tan; } #demo, p { height: 200px; } .app, p { background: tan; }運算
在sass中我們的運算是可以包含單位,此時我們的運算會對不同的單位做換算,通常默認單位是px。
當運算時,哪個單位在前面,得到結果就一哪個單位為最終單位。
在SASS中可以對CSS屬性值進行運算。
除法元算特殊,因為CSS樣式中有 font 屬性樣式。
必須加上()
是變量或者函數返回的結果
除法是其它運算表達式中的一部分。
$w: 100px; .box { width: $w; height: (100/2)px; // 盡量不要使用數字相除,編譯之后單位與數字之間會有空格 height: 100px+2px; font-size: round(5.5px)/2; padding: ($w/20)px; // 加上括號之后,不需要加單位,會補默認單位,加上去變成 `px px` }色彩運算
在16進制的色彩模式中,進行運算時,是對每一個通道色彩多帶帶運算,每個通道大于255或者小于0時候不會影響其它的通道顏色值。
在rgba模式下,進行色彩運算時,要求通明度必須保持一致,否則無法進行運算。
background: #948204 + #325; color: rgb(10, 20, 20) - rgb(22, 2, 8); border: 1px solid rgba(20, 2, 10, .4) * rgba(10, 34, 2, .4);
編譯之后:
background: #c7a459; color: #00120c; border: 1px solid rgba(200, 68, 20, 0.4);字符運算
+:字符串拼接。
注意:沒有""來表示字符串
$cur: -drop; div { cursor: no + $cur; }插值
作用:動態創建一些值
語法:border-#{$key}
@mixin arrow ( $dir: top, $w: 1px, $c: #fff, $pos: absolute ) { position: $pos; border: $w solid transparent; border-#{$dir}: $w solid $c; font-size: 0; }if語句
語法:
通過@if定義if語句
通過@else if 定義else if 語句
通過@else 定義 else 語句
使用關鍵字: or, and :表示 || 和 &&
@mixin arrow ( $dir: top, $w: 1px, $c: #fff, $h: $w, $pos: absolute ) { border: $w solid transparent; @if $dir == top or $dir == bottom { border-left-width: $h; border-right-width: $h; } @else { border-top-width: $h; border-right-width: $h; } position: $pos; border-#{$dir}: $w solid $c; font-size: 0; }for循環
語法: @for $i form strat through end {}
$i:循環變量
start: 起始值,包括自身
end:終止值,包括自身
.box { height: 30px; margin-bottom: 10px; } @for $i from 1 through 16 { .item-#{$i} { background: #101 * ($i-1); } }while循環
語法:@while 循環條件 {}
當循環條件滿足時,會執行該循環
$i: 1; @while $i < 2 { .item-#{$i} { background: #111 * $i; } $i: $i + 2; }
$j: 1; @while $j < 21 { .col-lg-#{$i} { width: 100%/2 * $j; } $j: $j+1; }三元運算符
語法:通過if關鍵字實現。if(條件, true結果, false結果)
$isColor: true; body { background: if( $isColor, green, blue ); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/111374.html
摘要:不過必須要先安裝,然后再安裝。淘寶鏡像安裝由于國內網絡原因你懂的,導致存放在上面的資源文件間歇性連接失敗。嵌套可以進行選擇器的嵌套,表示層級關系。重要注釋管理項目文件結構預處理器的特點之一是可以把你的代碼分割成很多文件,而且不會影響性能。 Sass 是什么? showImg(https://segmentfault.com/img/bVqyKF); Sass 是 Syntactical...
摘要:同樣的在下安裝有多種方法。這樣的文件,命名規范是以下劃線開頭的,這樣的文件不會被編譯成文件。這個特性現在正被眾多開發者濫用。就是取值的一種特殊形式,符合特殊用法。函數名稱參數列表數據處理繼承允許一個選擇器,繼承另一個選擇器。 sass介紹 ? SASS是一種CSS的開發工具,提供了許多便利的寫法,大大節省了設計者的時間,使得CSS的開發,變得簡單且可維護。 ? SASS的本...
摘要:同樣的在下安裝有多種方法。這樣的文件,命名規范是以下劃線開頭的,這樣的文件不會被編譯成文件。這個特性現在正被眾多開發者濫用。就是取值的一種特殊形式,符合特殊用法。函數名稱參數列表數據處理繼承允許一個選擇器,繼承另一個選擇器。 sass介紹 ? SASS是一種CSS的開發工具,提供了許多便利的寫法,大大節省了設計者的時間,使得CSS的開發,變得簡單且可維護。 ? SASS的本...
摘要:未編譯樣式多繼承鏈式繼承占位選擇器編譯后樣式中使用聲明混合,可以傳遞參數,參數名以符號開始,多個參數以逗號分開,也可以給參數設置默認值。 初識Sass SASS簡介 sass是一種css預處理器,用專門的編程語言,進行網頁樣式設計,然后再編譯成正常的CSS文件。Sass是CSS3的擴展,它增加了嵌套規則,變量,mixins,選擇器繼承等等。Sass生成格式良好的CSS,使樣式表更易于組...
閱讀 3560·2021-10-09 09:43
閱讀 6177·2021-09-07 10:15
閱讀 2757·2019-08-30 14:03
閱讀 3088·2019-08-29 11:01
閱讀 1724·2019-08-29 10:56
閱讀 1089·2019-08-28 17:52
閱讀 3508·2019-08-26 11:42
閱讀 2564·2019-08-26 10:33