<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # **sass** ## 一、什么是 sass Sass 是一種 CSS 的預編譯語言。它提供了[變量(variables)](https://sass.bootcss.com/documentation/variables)、[嵌套(nested rules)](https://sass.bootcss.com/documentation/style-rules#nesting)、[混合(mixins)](https://sass.bootcss.com/documentation/at-rules/mixin)、[函數(functions)](https://sass.bootcss.com/documentation/modules)等功能,并且完全兼容 CSS 語法。Sass 能夠幫助復雜的樣式表更有條理, 并且易于在項目內部或跨項目共享設計。 ## 二、安裝 sass [https://sass.bootcss.com/install](https://sass.bootcss.com/install) node.js 下 npm install -g sass mac 系統: gem install sass window系統: ruby安裝后 gem install sass ## 三、將 sass編譯為 css 1、可以使用 compass 2、可以使用命令行 使用 sass命令: sass 空格 目錄:存放的地址 ![](https://img.kancloud.cn/68/85/6885792cd819faa9bc8bc18c5097fa1f_462x26.png) 用 sass監視 sass目錄下文件的變化 sass --watch sass(目錄):css(指定目錄) ![](https://img.kancloud.cn/d5/32/d53232c7349e2e0f45a6ac78c7f7af4e_326x42.png) ![](https://img.kancloud.cn/c8/8e/c88e891f3888113c4e3dc12cfd9eb254_716x30.png) >>命令行創建項目并實施監視: 1、進入到想保存項目的位置 cd 目錄 2、 創建目錄并進入目錄 mkdir 目錄 && cd $_ 3、 在編譯器中創建目錄(一個 css 一個 sass),創建好后創建個 style.scss的文件,并在命令行中執行編譯后文件格式和存放位置 執行sass sass/style.scss:css/style.css 4、由于每執行編譯都需要執行上述代碼,因此可以使用 sass --watch sass(目錄):css(指定目錄) 5、默認輸出的 css樣式不是嵌套的格式,為了清晰格式修改 css 編譯后樣式 ![](https://img.kancloud.cn/ee/f1/eef1974d875ffbe4ed9b4b7aebe52483_476x202.png) 需要在命令行 sass --watch sass(目錄):css(指定目錄) --style compact //緊湊格式 ![](https://img.kancloud.cn/1d/c8/1dc89e666c9c620c33884570aaf0886a_576x144.png) sass --watch sass(目錄):css(指定目錄) --style compressed //壓縮格式 ![](https://img.kancloud.cn/1b/66/1b661bc55ba97a7c8a0307ab52874189_726x58.png) sass --watch sass(目錄):css(指定目錄) --style expanded //嵌套格式 ![](https://img.kancloud.cn/c7/dd/c7dd69cf4f149022d017ec07f4a82698_808x472.png) 3、編譯器的插件 Easy Sass ## 四、.sass 與 .scss的區別 1. 文件擴展名不同,Sass 是以“.sass”后綴為擴展名,而 SCSS 是以“.scss”后綴為擴展名 2. 語法書寫方式不同,Sass 是以嚴格的縮進式語法規則來書寫,不帶大括號({})和分號(;),而 SCSS 的語法書寫和我們的 CSS 語法書寫方式非常類似。 ``` //scss代碼 1. .a?{?? 2. ????color:?blue;?? 3. ????font-weight:?bold;?? 4. ????text-decoration:?underline;?? 5. ????.b?{?? 6. ????????color:black;?? 7. ????}?? 8. } ``` 編譯后的 css代碼為 ``` //css 1. .a?{?? 2. ??color:?blue;?? 3. ??font-weight:?bold;?? 4. ??text-decoration:?underline;?}?? 5. ??.a?.b?{?? 6. ????color:?black;?} ``` 但是這樣的代碼將后綴改成.sass就不能通過編譯了。首先.sass不要大括號,其次不需要分號,還有行首空格問題,比如第一個元素的屬性空2個空格就不能通過編譯。.sass文件需要嚴格的格式要求 ``` //sass代碼 1. .div?? 2. ?color:?blue?? 3. ?.b?? 4. ??color:?black?? 5. ??font-weight:?bold?? 6. ??text-decoration:?none?? 7. ??.c?? 8. ???color:?white ``` 編譯后 ``` //css 1. .div?{?? 2. ??color:?blue;?}?? 3. ??.div?.b?{?? 4. ????color:?black;?? 5. ????font-weight:?bold;?? 6. ????text-decoration:?none;?}?? 7. ????.div?.b?.c?{?? 8. ??????color:?white;?} ``` 由于 SCSS 是 CSS 的擴展,書寫起來更順手,所以我們使用 .scss ## 五、變量 可以用變量代替值,易維護,直接修改變量就行,定義變量的時候可以使用```-```或者```_```,二者可以交替使用 1、變量單值 ![](https://img.kancloud.cn/e4/3f/e43f0d191e608fef81cf8d90d45996d9_1410x420.png) 2、變量多值 ![](https://img.kancloud.cn/f5/1a/f51af5ceb7b2fbe1e5cf47e0fe08ec2e_1470x642.png) ## 六、嵌套 ![](https://img.kancloud.cn/65/e7/65e7d50eceda3c23a5e059b431581c89_1400x1298.png) ## 七、嵌套時使用父選擇器 ![](https://img.kancloud.cn/b3/f0/b3f048525ef7513121ad66a30a2570c3_1428x1174.png) 這是錯誤的 所以在寫法上應該使用```&``` ![](https://img.kancloud.cn/d8/d0/d8d05768c08c4bbc8146e39aec3ffce7_1138x462.png) ### 八、嵌套屬性 **在需要被嵌套的屬性后加```: {}```** ![](https://img.kancloud.cn/fb/fa/fbfa5043dc3debd2c40c411bd00029a4_1542x820.png) **跳出嵌套** 使用 ```@at-root``` 跳出嵌套 ![](https://img.kancloud.cn/98/c9/98c92b589b0344c7c76b093bdd9c1f2a_1444x728.png) 如果是媒體查詢的樣式 是不能跳出的,如果要跳出就使用 without: media rule ``` //媒體查詢樣式 @media screen and (max-width: 600px) { @at-root .container { Background: green; } } ``` ![](https://img.kancloud.cn/55/49/554927c11d7ac1887aff20c1b3e2cab1_1930x360.png) ``` //跳出媒體查詢 @media screen and (max-width: 600px) { @at-root (without: media rule) { .container { Background: green; } } } ``` ![](https://img.kancloud.cn/e3/61/e36172249d175eb5fdf1a63db1939bb1_1720x418.png) ## 九、mixin(用名字定義好的樣式,可以在任何地方使用) ``` @mixin 名字(參數 1, 參數 2) { ... } ``` ![](https://img.kancloud.cn/7d/23/7d23ca3cac29962902d89c385fddd64c_1516x572.png) mixin中使用嵌套 ![](https://img.kancloud.cn/95/a7/95a7528a008a13af3eda12c397cba3be_1390x540.png) mixin中使用參數 ``` @mixin 名字($參數 1, $參數 2) { ... } ``` 1. 渲染順序就是括號中定義的順序 ![](https://img.kancloud.cn/d4/9d/d49d07cefb8e410601b45473571f7ff6_1816x672.png) 1. 如果想打亂順序,在調用中使用鍵值對的方式 ![](https://img.kancloud.cn/f5/87/f58757108b6d5c13763f47a569694842_1978x444.png) 1. 如果傳遞多個參數,但是定義的時候只有一個,需要在定義之后加```...``` ![](https://img.kancloud.cn/8a/f6/8af61cc8db7280c446d40f5ed0154b2f_1948x594.png) ## 十、@extend (一個選擇器繼承另一個選擇器中所有的樣式) ![](https://img.kancloud.cn/41/d7/41d748a99659bb8dc7f6a591966746cd_1538x628.png) ## 十一、@import Partials 一般的引入每使用一次 import 瀏覽器都會發出一次新的 http請求,下載導入的 css文件,影響性能。但是scss 會把內容導入到一個 css文件,其余被引入的像是一個部分,小的scss 文件被稱為 Partials,每一個 partials文件的文件名前面都有```_```,模塊化,有條理 ![](https://img.kancloud.cn/2a/24/2a247c507539d52b5322db66c883faee_648x328.png)![](https://img.kancloud.cn/36/33/3633573f7fdc3a14ee7e6b14eb388398_1566x826.png) * **文件名要以```_```開頭,要引入該部分內容,可以省略掉下劃線以及后綴名** ## 十二、注釋 1. 多行注釋 ```/*會包含在沒有壓縮之后的 css里面*/``` 2. 單行注釋 ```//不會出現在css里面``` 3. 強制注釋 ```/*! 會出現在壓縮 css里面*/``` ![](https://img.kancloud.cn/11/dc/11dc0c17fad9a8686434231617e909f3_1854x396.png) ## 十三、數據類型 命令行中輸入 ```sass -i``` 就可以看到輸出的結果 繼續在命令行使用 ```type-of(你要查詢的內容)```就可以輸出數據類型 ``` sass -i >> type-of(5) "number" //數字類型也可以輸出單位 >>type-of(5px) "number" >>type-of(hello) "string" >>type-of("hello") "string" //列表數據 是指一組數據,期間用空格或者','隔開 >>type-of(1px soild #000) "list" //顏色類型的 >>type-of(#eeeeee) "color" ``` 1. number ??```$n1: 1.2``` ??```$n2: 12``` ?```$n3: 14px``` ? 2. String ?```$s1: container``` ??```$s2: ‘container’``` ?```$s3: “container”``` 3. bool ??```$bt: true``` ???```$bf: false``` 4. Null ???```$null: null``` ??? 5. 顏色 ?```$c1: blue``` ??```$c2: #fff``` ???```$c3: rgba(255, 255, 255, 0) ```????? 6. list 和 map 使用```nth``` 和 ```map-get``` * **變量操作** ```==``` ```?!= ```?支持所有數據類型 ```<``` ```>``` ```<=``` ```>=```僅支持數字類型 ```+ ``` ```-``` ```*``` ``` %``` 1. **運算**:運算符兩邊要有空格 ``` p { padding: 3px + 4px auto } 輸出: p: { padding: 7px auto } ``` 2. sass 中進行運算可以攜帶單位, ``` >>5px + 5px 10px >>5px - 2 3px >>5px * 2 10px >>5px * 5px 10px*px -- sass無法識別,所以要注意 ``` 3. sass中的除法(使用除法運算的時候 需要用圓括號包裹) 因為在 sass中保留了一些```/```的語法 , 如:```font: 16px/1.8```表示字體16px 1.8倍行距;另外兩邊要保持單位一致 ``` >>(10px / 2px) 5 >>(10px / 2) 5 >>(10 / 2px) 不會編譯過去 -- 要注意 ``` 4. 如果要在字符串中間使用變量 (使用```#{}```) ``` $version: 3 p:before { content: 'hello, sass #{$version}' } 編譯后: p:before { content: 'hello,sass 3' } ``` * **sass中的內置函數** 1. abs( ) --求絕對值 2. round( ) 四舍五入 3. ceil( ) 向上取整 4. floor( ) 向下取整 5. percentage( ) 變為百分數 6. min( ) 一組數字中的最小值 max( ) 一組數字中的最大值 * **string** 不帶引號的字符串 ```center``` ```right``` ```left``` .... 帶引號和不帶引號字符串的區別是:帶引號的字符串里面可以包含空格和特殊符號,而不帶引號字符串反之 ``` >>"ning" + hao "ninghao" >>ning + "hao" "ninghao" >>"ninghao" + 8080 "ninghao8080" >>ning - hao "ning-hao" >>ning / hao "ning/hao" >>ning * hao //報錯 因為兩個字符串相乘是沒有意義的 ``` * **處理 string 的函數** ``` //定義變量 >>$greeting: "Hello ninghao" "Hello ninghao" >>to-upper-case($greeting) --轉為大寫 "HELLO NINGHAO" >>to-lower-case($greeting) --轉為小寫 "hello ninghao" >>str-length($greeting) --輸出字符串長度 13 >>str-index($greenting, "Hello") --判斷字符串的位置,索引從 1開始 1 >>str-insert($greenting, ".net", 14) --字符串中插入新的子豆腐串 "Hello ninghao.net" ``` * **顏色函數** ```rgb(紅,綠,藍)``` ```rgba(紅,綠,藍,透明度)``` ```hsl(色相0-360, 飽和度0-100%, 明度0-100%)``` ```hlsa(色相0-360, 飽和度0-100%, 明度0-100%, 透明度0-1)``` 調整色相值```adjust-hue(顏色, 數值 deg)``` ![](https://img.kancloud.cn/7c/ed/7ced080cb298c2dac88bc2b305662a29_1146x702.png) 改變顏色明度```lighten顏色,明度 )```-->更亮 ```darken(演的,明度)-->更暗``` ![](https://img.kancloud.cn/6e/a0/6ea0d3a427d75fee18631fb4c44befa4_952x926.png) ```saturate()``` 增加顏色的純度(飽和度) ```desaturate()``` 減少顏色的純度(飽和度) ![](https://img.kancloud.cn/ce/c2/cec2da13beb5e01de257feffb05ebf0e_1044x912.png) ```transparentize()``` 減少不透明度(更透明) ```opacify()```增加不透明度(更不透明) ![](https://img.kancloud.cn/7b/58/7b5847140d93b817b2830509b40c8763_1054x922.png) * **list--列表(一串值)** eg. ```border: 1px soild #efefef;``` 相當于一個數組 * 列表函數 ``` >>length(5px 10px) //判斷列表的長度有幾項 序號從 1 開始 2 >>nth(列表, 列表項目序號) //得到列表某個項的序號 nth(5px 10px, 1) 5px >>index(列表,項) //得到列表某序號的項 index(5px 10px , 5px) 1 >>append(列表, 新的項) //增加新的項 appen(5px 10px, 5px) (5px 10px 5px) >>join() //組合兩個列表 , 可以有第三個參數 space(空格) comma(逗號) join(5px 10px, 10px 5px) (5px 10px 10px 5px) join(2px 3px, 10px 0, comma) (2px, 3px, 10px, 0) ``` * **map** 列表為鍵值對的形式 ```$map(key1: value1, key2: value2, key3: value3)``` > **Sass Map(映射)對象是以一對或多對的 key/value 來表示。 Sass Map 是不可變的,因此在處理 Map 對象時,返回的是一個新的 Map 對象,而不是在原有的 Map 對象上進行修改。** ``` 下表列出了 Sass 的 Map 函數: >>$colors: (light: #ffffff, dark: #000000) >>map-get() //根據項目名字,得到值 eg: map-get($colors, light) #ffffff >>map-keys() //得到項目所有的key值 eg: map-keys($colors) ("light","dark") >>map-values() //得到項目所有的值 eg: map-values($colors) (#ffffff, #000000) >>map-has-key(判斷的 map, 判斷的 Key) //判斷 map中是否有指定的key map-has-key($colors, light) true >>map-merge() //合并兩個 map map-merge($colors, (light-gray: #e5e5e5)) (light: #ffffff, dark: #000000, light-gray: #e5e5e5) >>map-remove() //移除 map中的一項 map-remove($colors, light) (dark: #000000, light-gray: #e5e5e5) ``` * **boolean** 各種比較之后為 ```true``` 和 ```false``` sass 中還支持 ```and(與)``` ```or(或) ``` ```not(非)``` ``` //and 兩真為真,一假為假 //or 兩假為假 ,一真為真 // not 為否定 如果給為真的內容前面加 not則返回 false... >>(5px > 3px) and (5px > 10px) false >>(5px > 3px) or (5px > 10px) true >>not(5px > 3px) false ``` * **interpolation** 一個值插入到另一個值中,sass中把變量和表達式放到```#{}```,可以在樣式選擇器和屬性上使用變量 ``` //如果要在字符串中間使用變量 (使用```#{}```) $version: 3 p:before { content: 'hello, sass #{$version}' } 編譯后: p:before { content: 'hello,sass 3' } ``` //屬性和選擇器使用interpolation ![](https://img.kancloud.cn/f5/bd/f5bd7d2a7307ffd20bb2d7686609b8a8_770x834.png) ## 十四、控制指令-Control Directives ```@if``` ```@for``` ```@each``` ```@while``` * **```@if```** ``` @if 條件{ ... } ``` ![](https://img.kancloud.cn/04/3f/043f76f4869ab726b85940e70ea2145e_726x828.png) ![](https://img.kancloud.cn/e2/8b/e28bd4176cc1586a97c6de294aa28a98_786x962.png) ![](https://img.kancloud.cn/81/5c/815c592d00600acb3a068f67b9b1d179_748x790.png) * **```@for```** ``` @for $var from <開始值> through <結束值> { ...//包含每次循環的結果 } @for $var from <開始值> to <結束值> { ... //不會包含結束值的循環 } ``` ![](https://img.kancloud.cn/8d/d8/8dd8841a76d11150a3eb83882d4e1824_1338x1342.png) * **```@each```** 有一個列表,根據列表每個項形成特定的樣式 ``` @each $var in $list { ... } ``` ![](https://img.kancloud.cn/68/da/68dae16bbf4bc2efcfa8c3a082eb5ae6_1204x1012.png) * **```@while```** 判斷條件 為真時一直執行,直到返回 false為止 ``` @while 條件 { ... } ``` ![](https://img.kancloud.cn/65/18/6518f5ea186d1911a9e6d270f6d83466_1108x634.png) ## 十五、函數 ``` @function 名稱(參數 1, 參數 2) { ... } ``` ![](https://img.kancloud.cn/97/d6/97d69a61da7af81f8fc42e17d5ae1301_990x798.png) ## 十六、警告,錯誤信息 ```@warn``` ```@error``` ```@debug``` ![](https://img.kancloud.cn/4b/b5/4bb5e12e2deeb74641b5a9062c24b912_830x820.png) 編譯后什么都沒有,錯誤以及警告信息會出現在命令行里 ![](https://img.kancloud.cn/c3/bd/c3bd63e33fa4311e4b57b97d571f1134_792x138.png) 如果是 error會知己而顯示在 css的報錯里 ![](https://img.kancloud.cn/85/21/8521397e2d2c51783428367306a1af5c_910x934.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看