操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    來(lái)源:廣州日?qǐng)?bào)

    6月16日(美國(guó)當(dāng)?shù)貢r(shí)間6月15日)起,

    微軟公司永久關(guān)閉IE瀏覽器。

    IE瀏覽器曾是

    使用最廣泛的網(wǎng)頁(yè)瀏覽器,

    占據(jù)全球95%的市場(chǎng)份額。

    IE瀏覽器正式退役后,

    其功能將由Edge瀏覽器接棒。

    微軟IE瀏覽器6月16日起永久關(guān)閉

    6月16日起,微軟徹底終止支持Internet Explorer瀏覽器(以下簡(jiǎn)稱IE)。微軟向用戶推薦使用該公司在2015年推出的Edge瀏覽器。

    推出于1995年的IE瀏覽器全稱為“Internet Explorer”,是Windows第一個(gè)默認(rèn)瀏覽器。隨著Windows系統(tǒng)快速占領(lǐng)市場(chǎng),IE瀏覽器曾成為全球使用最廣泛、市場(chǎng)占有率最高的網(wǎng)絡(luò)瀏覽器。

    2021年5月20日,微軟宣布將在2022年6月16日徹底終止支持IE,同年,微軟發(fā)布Windows 11,IE被徹底從Windows操作系統(tǒng)中移除,將用戶推向2015年推出的Edge瀏覽器。

    “微軟IE瀏覽器6月16日正式退役”

    的話題一度沖上熱搜,

    不少網(wǎng)友稱:

    “爺青結(jié)”,

    IE瀏覽器見(jiàn)證了幾代人的青春,

    “E網(wǎng)情深”將成為歷史。

    有人感慨:

    “回看IE瀏覽器27年歷史,

    有過(guò)輝煌巔峰,

    也曾淪為笑柄,

    承載幾代人的回憶,

    終于不‘再見(jiàn)’”。一度輝煌

    曾占據(jù)全球市場(chǎng)95%的份額

    1995年8月,微軟發(fā)布操作系統(tǒng)Windows 95,首次將“窗口”概念引入PC市場(chǎng),同時(shí)開(kāi)創(chuàng)了可視化PC時(shí)代的大幕,時(shí)至今日,PC可視化操作仍是主流操作模式。

    作為Windows 95的默認(rèn)瀏覽器,IE瀏覽器飛速占領(lǐng)市場(chǎng),可謂是“出道即巔峰”,三年后成為全球市場(chǎng)份額第一的瀏覽器。

    2001年,IE瀏覽器推出了最“經(jīng)典”的6.0版本,并在2003年走上巔峰,IE瀏覽器各個(gè)版本占據(jù)全球市場(chǎng)95%的份額。那是IE瀏覽器的黃金時(shí)代。

    但“成也經(jīng)典、敗也經(jīng)典”,IE瀏覽器的6.0版本一用就是5年,直到2006年,微軟才更新了換湯不換藥的IE 7——實(shí)際上,除了更卡,網(wǎng)友感知沒(méi)啥區(qū)別。

    2011年微軟推出IE 9,有了較大改變,但“IE速度慢”觀念已深入人心,IE 9無(wú)力回天。在2015年,微軟宣布,開(kāi)始孵化它的另一個(gè)瀏覽器“兒子”Edge瀏覽器。

    在這期間,市場(chǎng)上各個(gè)瀏覽器百花齊放,出現(xiàn)Chrome、火狐、Safari、360、百度、搜狗、QQ等瀏覽器,甚至做網(wǎng)站導(dǎo)航的網(wǎng)站幾乎都有自己的瀏覽器。

    不過(guò),面對(duì)來(lái)勢(shì)洶洶的競(jìng)爭(zhēng)對(duì)手,IE瀏覽器依然保持了不緊不慢的發(fā)展節(jié)奏,直至現(xiàn)在即將退役,至此IE 11成為了微軟IE瀏覽器的終結(jié)者。27年歷史,IE瀏覽器僅僅更新了11代。跟不上時(shí)代的步伐

    常被被網(wǎng)友吐槽調(diào)侃

    IE瀏覽器是如何被用戶一步步“拋棄”的?

    在IE瀏覽器的使用過(guò)程中,IE瀏覽器的缺點(diǎn)不斷暴露出來(lái),速度慢、反應(yīng)遲鈍、兼容性不佳、動(dòng)不動(dòng)還“崩潰”。當(dāng)然,IE瀏覽器的競(jìng)爭(zhēng)對(duì)手如雨后春筍般出現(xiàn)也加速了IE瀏覽器的“死亡”。

    微軟Edge瀏覽器截圖

    終于,在2010年,谷歌瀏覽器Chrome第一個(gè)支持Windows、Linux等三個(gè)操作系統(tǒng)的穩(wěn)定版發(fā)布,這為IE瀏覽器的噩夢(mèng)拉開(kāi)序幕。在之前,Chrome已進(jìn)行了一年多的測(cè)試。

    Chrome推出后短短兩年,有調(diào)研公司數(shù)據(jù)顯示,在2012年,Chrome瀏覽器已成為全球第一大瀏覽器,約占市場(chǎng)份額的三分之一,IE瀏覽器緊隨其后,約占市場(chǎng)32%的市場(chǎng)份額。在2015年,IE瀏覽器市場(chǎng)份額跌破20%。

    時(shí)至今日,有調(diào)查數(shù)據(jù)顯示,IE瀏覽器的全球市場(chǎng)份額已下滑至2%以下。而Chrome市場(chǎng)份額超60%。

    網(wǎng)上對(duì)IE瀏覽器的吐槽隨處可見(jiàn):

    “作為一個(gè)開(kāi)發(fā)人員,希望IE趕緊退役,省的還要兼容IE。”
    “IE的作用就是下載其他瀏覽器,我這樣說(shuō)沒(méi)人反對(duì)吧?”
    “是誰(shuí)給IE的勇氣,詢問(wèn)是否將它設(shè)為默認(rèn)瀏覽器?”

    有甚至網(wǎng)友還惡搞評(píng)選出世界上最慢的幾樣?xùn)|西,“樹(shù)懶,烏龜、海星和IE。”

    由于用戶體驗(yàn)不佳,IE瀏覽器逐漸成為了“緩慢” “卡頓”等的代名詞,甚至由此誕生出了很多“段子”。

    “IE 27年的旅程,從今以后,這條路由Edge替IE繼續(xù)走下去。不久前Edge瀏覽器桌面市場(chǎng)份額終于突破10%,遙望IE曾經(jīng)的輝煌,小E深感路漫漫其修遠(yuǎn)兮,吾將上下而求索。”微軟對(duì)IE進(jìn)行總結(jié)不忘為Edge鋪路。

    不過(guò)Edge能否重IE曾經(jīng)的輝煌,仍待時(shí)間驗(yàn)證。

    你用過(guò)IE瀏覽器嗎?

    有哪些感受?

    評(píng)論區(qū)見(jiàn)~

    相關(guān)介紹

    一、CSS預(yù)處理器出現(xiàn)的原因

    1. 無(wú)法嵌套書(shū)寫(xiě)導(dǎo)致代碼繁重、冗雜、邏輯混亂。
    2. 沒(méi)有變量和樣式復(fù)用機(jī)制,屬性值只能以字面量的形式重復(fù)輸出。
    # 總結(jié):代碼復(fù)用性低;不易于維護(hù)
    # 注:現(xiàn)在,現(xiàn)在的CSS是可以定義變量的!!!
    :root{
      --red: #f3e1e1;
    }

    二、出名的CSS預(yù)處理器介紹

    1. SCSS/SASS

    SASS (.scss)。于2007年誕生,最早也是最成熟的CSS預(yù)處理器,擁有ruby社區(qū)的支持和compass這一最強(qiáng)大的css框架,目前受LESS影響,已經(jīng)進(jìn)化到了全面兼容CSS的SCSS。

    2. LESS

    LESS (.less)。于2009年誕生,借鑒了SASS的長(zhǎng)處,并兼容了CSS語(yǔ)法,使得開(kāi)發(fā)者使用起來(lái)更為方便順手,但是相比于SASS,其編程功能不夠豐富,反而促使SASS進(jìn)化成為了SCSS。

    3. Stylus

    Stylus (.styl)。于2010年誕生,出自Node.js社區(qū),主要用來(lái)給Node項(xiàng)目進(jìn)行CSS預(yù)處理支持,人氣較前兩者偏低。


    三、SCSS和SASS之間的關(guān)系

    簡(jiǎn)而言之:

    Sass有兩套語(yǔ)法:
    
    1.第一種或更新的語(yǔ)法被稱為SCSS。它是CSS語(yǔ)法的擴(kuò)展。這意味著每個(gè)有效的CSS樣式表都是具有相同含義的有效SCSS文件。下文描述的Sass功能增強(qiáng)了此語(yǔ)法。使用此語(yǔ)法的文件擴(kuò)展名為.scss。
    
    2.第二種或更舊的語(yǔ)法被稱為SASS。提供了一種更為簡(jiǎn)潔的CSS編寫(xiě)方式。它使用縮進(jìn)而不是方括號(hào)來(lái)表示選擇器的嵌套,并使用換行符而不是分號(hào)來(lái)分隔屬性。使用此語(yǔ)法的文件擴(kuò)展名為.sass。
    
    任何一種格式可以直接 導(dǎo)入 (@import) 到另一種格式中使用,或者通過(guò) sass-convert 命令行工具轉(zhuǎn)換成另一種格式

    四、使用CSS預(yù)處理器的優(yōu)劣

    1.優(yōu)點(diǎn)

    CSS預(yù)處理器為CSS增加一些編程的特性,無(wú)需考慮瀏覽器的兼容性問(wèn)題。支持嵌套、變量和邏輯等。可以讓CSS更加簡(jiǎn)潔、提高代碼復(fù)用性、邏輯分明等等

    2.缺點(diǎn)

    css的文件體積和復(fù)雜度不可控;增加了調(diào)試難度和成本等。

    五、選擇SCSS的原因

    1. 官方介紹
    2. Sass 是一款強(qiáng)化 CSS 的輔助工具,它在 CSS 語(yǔ)法的基礎(chǔ)上增加了變量 (variables)、嵌套 (nested rules)、混合 (mixins)、導(dǎo)入 (inline imports) 等高級(jí)功能,這些拓展令 CSS 更加強(qiáng)大與優(yōu)雅。使用 Sass 以及 Sass 的樣式庫(kù)(如 Compass)有助于更好地組織管理樣式文件,以及更高效地開(kāi)發(fā)項(xiàng)目。
    3. 特色功能
    4. 完全兼容 CSS3
    5. 在 CSS 基礎(chǔ)上增加變量、嵌套 (nesting)、混合 (mixins) 等功能
    6. 通過(guò)函數(shù)進(jìn)行顏色值與屬性值的運(yùn)算
    7. 提供控制指令 (control directives)等高級(jí)功能
    8. 自定義輸出格

    環(huán)境配置

    less、scss(sass)和stylus代碼并不能被瀏覽器直接解析,所以必須先將它們編譯成css代碼
    
    現(xiàn)有框架已經(jīng)提供了css預(yù)處理器選項(xiàng),編譯相關(guān)配置會(huì)自動(dòng)幫我們生成!所以只有在"練習(xí)"情況下才有必要安裝該環(huán)境

    一、安裝分類

    1.不依賴編輯器

    # 全局安裝scss預(yù)處理器,使用終端命令實(shí)現(xiàn)編譯
    
    a. Node環(huán)境下的node-sass模塊
    b. Node環(huán)境下的dart-sass模塊
    c. Ruby環(huán)境下的sass模塊
    d. Dart環(huán)境下的sass模塊
    
    # 注:這里的推薦順序針對(duì)的是"練習(xí)"場(chǎng)景,而開(kāi)發(fā)環(huán)境下推薦使用的是dart-sass
    # 本質(zhì):某個(gè)語(yǔ)言的第三方庫(kù)或者命令行工具

    2.依賴編輯器

    a. IDE代表:Webstrom前提是安裝上述"1"中的命令行編譯工具,配置自動(dòng)命令,另安裝一個(gè)代碼提示插件scss
    b. 編輯器代表:vscode   安裝Easy Sass(編譯)和Sass(代碼提示)兩個(gè)插件

    二、安裝步驟

    1.不依賴編輯器

    Node環(huán)境

    - node-sass

    a.安裝

    1. 安裝node https://nodejs.org(官網(wǎng)) 或 https://npm.taobao.org/mirrors/node(鏡像)
    2. *安裝cnpm(不推薦直接將源換為淘寶鏡像!!) $npm i -g cnpm --registry=https://registry.npm.taobao.org
    3. 安裝node-sass $npm i -g node-sass 或 $cnpm i -g node-sass
    4. 檢查是否安裝成功$node-sass -v

    b.使用

    1. 單文件編譯
    2. $node-sass 原有的scss文件 生成的css文件
      $node-sass 原有的scss文件 -o 生成目錄

      # example:
      $node-sass a.scss b.css
      $node-sass a.scss css_files
    3. 多文件編譯
    4. $node-sass 原有的scss文件目錄 -o 生成的css文件目錄

      # example:
      $node-sass c -o d
    5. 文件監(jiān)聽(tīng)模式
    6. # 在"1"和"2"的基礎(chǔ)上填加"-w"命令行參數(shù)即可
      $node-sass -w 原有的scss文件 -o 生成目錄
      $node-sass -w 原有的scss文件目錄 -o 生成的css文件目錄

      # example:
      $node-sass -w scss -o css

      # 效果:編譯進(jìn)程不結(jié)束,監(jiān)聽(tīng)文件內(nèi)容

    - dart-sass

    a.安裝

    1. 安裝node https://nodejs.org(官網(wǎng)) 或 https://npm.taobao.org/mirrors/node(鏡像)
    2. *安裝cnpm(不推薦直接將源換為淘寶鏡像!!) $npm i -g cnpm --registry=https://registry.npm.taobao.org
    3. 安裝dart-sass $npm i -g sass 或 $cnpm i -g sass
    
    
    # 注:該模塊為第三方庫(kù),所以可以考慮使用cnpm i sass -D(-D==--save-dev)僅對(duì)某個(gè)小項(xiàng)目當(dāng)做開(kāi)發(fā)時(shí)依賴進(jìn)行使用

    b.使用

    /* 該模塊的官方文檔:https://sass-lang.com/documentation/js-api */
    
    
    const sass=require('sass');
    
    sass.render({file: scss_filename}, function(err, result) { /* ... */ });
    // OR
    const result=sass.renderSync({file: scss_filename});
    
    // 注:默認(rèn)情況下renderSync()的速度是render()的兩倍以上,這是由于異步回調(diào)所帶來(lái)的開(kāi)銷而導(dǎo)致的

    Ruby環(huán)境

    a.安裝

    1.安裝Rubyhttps://rubyinstaller.org/downloads
    2.*配置鏡像$gem sources -a https://gems.ruby-china.com/ -r https://rubygems.org/
    3.*查看源 $gem sources -l # 確保只有g(shù)ems.ruby-china.com一個(gè)源
    4.安裝scss $gem install sass
    5.檢查是否安裝成功 $sass -v
    #注:如果出現(xiàn)了SSL錯(cuò)誤,修改 ~/.gemrc 文件,增加 ssl_verify_mode: 0 配置
    # ~表示用戶根目錄,windows的文件位置為C:\Users\用戶名\.gemrc
    
    ---
    :sources:
    - https://gems.ruby-china.com
    :ssl_verify_mode: 0

    b.使用

    # 注:最好帶上"-C --sourcemap=none "參數(shù)
    # 注:Sass 命令行工具根據(jù)文件的拓展名判斷所使用的語(yǔ)法格式,沒(méi)有文件名時(shí) sass 命令默認(rèn)編譯 .sass 文件,添加 --scss 選項(xiàng)或者使用 scss 命令編譯 SCSS 文件。
    1. 單文件編譯
    2. $sass 原有的scss文件[:]生成的css文件

      # example:
      $sass a.scss b.css
    3. 多文件編譯
    4. $sass --watch 原有的scss文件目錄:生成的css文件目錄
      # 注:必須加"--watch"
    5. 文件監(jiān)聽(tīng)模式
    6. $sass --watch 原有的scss文件:生成的css文件
      $sass --watch 原有的scss文件目錄:生成的css文件目錄

      # example:
      $sass --watch -C --sourcemap=none scss:css

      # 效果:編譯進(jìn)程不結(jié)束,監(jiān)聽(tīng)文件內(nèi)容

    Dart環(huán)境

    a.安裝

    1.安裝Darthttps://dart.dev/tools/sdk/archive
    2.*配置鏡像,添加環(huán)境變量 https://pub.flutter-io.cn 或 https://mirrors.tuna.tsinghua.edu.cn/dart-pub/
    windows打開(kāi)此電腦,添加系統(tǒng)變量 PUB_HOSTED_URL=https://pub.flutter-io.cn
    Linux鍵入$echo 'export PUB_HOSTED_URL="https://pub.flutter-io.cn"' >> ~/.bashrc 或 /etc/profile
    
    4.安裝sass
    全局安裝:$pub global activate sass(可執(zhí)行文件)
    項(xiàng)目安裝:pubspec.yaml填寫(xiě)好依賴后,執(zhí)行 $pub get (.dart代碼)
    5.檢查是否安裝成功$sass -v

    b.使用

    全局安裝模式

    1. 單文件編譯
    2. $sass 原有的scss文件[:]生成的css文件

      # example:
      $sass a.scss b.css
    3. 多文件編譯
    4. $sass 原有的scss文件目錄/:生成的css文件目錄/

      # example:
      $sass scss/:css/
    5. 文件監(jiān)聽(tīng)模式
    6. $sass --watch 原有的scss文件:生成的css文件
      $sass --watch 原有的scss文件目錄:生成的css文件目錄
      # 注:都必須加上":"

      # example:
      $sass --watch scss:css

      # 效果:編譯進(jìn)程不結(jié)束,監(jiān)聽(tīng)文件內(nèi)容


    局部安裝模式

    2.運(yùn)行.dart代碼
      // 前提是在pubsepc.yaml文件中添加依賴
      // dev_dependencies:
    //sass: lastest
    
    // main.dart
    import 'package:sass/sass.dart' as sass;
    
    void main(List<String> args) {
    print(sass.compile(args.first));
    }
    // or
    void main(List<String> args) {
    var result=sass.compile(arguments[0]);
    new File(arguments[1]).writeAsStringSync(result);
    }
    // dart main.dart styles.scss styles.css

    2.依賴編輯器

    WebStrom

    • 安裝上述命令行工具之一(以node-sass為例演示)
    • 依次打開(kāi)并點(diǎn)擊:webstrom -> Settings -> Tools -> Files Watchers -> + -> 選擇SCSS文件標(biāo)識(shí)
    • Name隨意寫(xiě),供自己看而已
    • File Type選擇SCSS Style Sheet
    • Scope選擇All Places
    • Program選擇可執(zhí)行文件的路徑(這里以node-sass為例)
    • Arguments按需選擇(這里以$FileName$:$FileNameWithoutExtension$.css為例)
    • Output paths to refresh按需選擇(這里以$FileNameWithoutExtension$.css為例)
    • 點(diǎn)擊OK,配置完成

    VSCode

    • 安裝Easy Sass(編譯)和Sass(代碼提示)兩個(gè)插件(注意大小寫(xiě),否則找不到)
    • 點(diǎn)擊插件右下角的設(shè)置圖標(biāo)后點(diǎn)擊"擴(kuò)展設(shè)置",最后點(diǎn)擊"在settings.json中編輯",開(kāi)始設(shè)置關(guān)于Easy Sass的配置
    • 會(huì)自動(dòng)生成下方圖片內(nèi)的配置
    • 添加"easysass.targetDir": $path,可將編譯后的css文件放入$path路徑下(默認(rèn)為當(dāng)前路徑)。例如生成到css文件下內(nèi)

    SassScript

    在 CSS 屬性的基礎(chǔ)上 Sass 提供了一些名為 SassScript 的新功能。SassScript 可作用于任何屬性,允許屬性使用變量、算數(shù)運(yùn)算等額外功能。
    
    弱類型語(yǔ)言, 對(duì)語(yǔ)法要求沒(méi)那么嚴(yán)格

    一、注釋

    1. Sass 支持標(biāo)準(zhǔn)的 CSS 多行注釋 /* */,以及單行注釋 //,前者會(huì)被完整輸出到編譯后的 CSS 文件中,而后者則不會(huì)。
    2. ! 作為多行注釋的第一個(gè)字符表示在壓縮輸出模式下保留這條注釋并輸出到 CSS 文件中,通常用于添加版權(quán)信息。
    3. 插值語(yǔ)句 (interpolation) 也可寫(xiě)進(jìn)多行注釋中輸出變量值

    例如:

    /*
    hello
    world!
    */
    
    // compile scss files to css
    // it's ready to do it.
    $pink: #f3e1e1;
    html{
      background-color: $pink;
    }
    
    $author: 'gdream@126.com';
    /*!
    Author: #{$author}.
    */

    開(kāi)發(fā)模式編譯后:

    /*
    hello
    world!
    */
    html{
      background-color: #f3e1e1;
    }
    /*!
    Author: 'gdream@126.com'.
    */

    壓縮輸出模式編譯后:

    html{
      background-color: #f3e1e1;
    }
    /*!
    Author: 'gdream@126.com'.
    */

    二、變量

    1.定義

    變量以美元符號(hào)開(kāi)頭,賦值方法與 CSS 屬性的寫(xiě)法一樣

    $width: 1600px;
    $pen-size: 3em;

    2.使用

    直接使用變量的名稱即可調(diào)用變量

    #app {
      height: $width;
      font-size: $pen-size;
    }

    3.作用域

    變量支持塊級(jí)作用域,嵌套規(guī)則內(nèi)定義的變量只能在嵌套規(guī)則內(nèi)使用(局部變量),不在嵌套規(guī)則內(nèi)定義的變量則可在任何地方使用(全局變量)。將局部變量轉(zhuǎn)換為全局變量可以添加 !global 聲明

    #foo {
    $width: 5em !global;
    width: $width;
    }
    
    #bar {
    width: $width;
    }

    編譯后:

    #foo {
    width: 5em;
    }
    
    #bar {
    width: 5em;
    }

    三、數(shù)據(jù)類型

    SassScript 支持 7 種主要的數(shù)據(jù)類型:

    • 數(shù)字,1, 2, 13, 10px
    • 字符串,有引號(hào)字符串與無(wú)引號(hào)字符串,"foo", 'bar', baz
    • 顏色,blue, #04a3f9, rgba(255,0,0,0.5)
    • 布爾型,true, false
    • 空值,null
    • 數(shù)組 (list),用空格或逗號(hào)作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif
    • maps, 相當(dāng)于 JavaScript 的 object,(key1: value1, key2: value2)

    SassScript 也支持其他 CSS 屬性值,比如 Unicode 字符集,或 !important 聲明。然而Sass 不會(huì)特殊對(duì)待這些屬性值,一律視為無(wú)引號(hào)字符串。

    判斷數(shù)據(jù)類型的方式:type-of($value)

    1.字符串 (Strings)

    SassScript 支持 CSS 的兩種字符串類型:有引號(hào)字符串 (quoted strings),和無(wú)引號(hào)字符串 (unquoted strings)

    $name: 'Tom Bob';
    $container: "top bottom";
    $what: heart;
    
    // 注:在編譯 CSS 文件時(shí)不會(huì)改變其類型。只有一種情況例外,使用 `#{}` (interpolation) 時(shí),有引號(hào)字符串將被編譯為無(wú)引號(hào)字符串,這樣便于在 mixin 中引用選擇器名

    2.數(shù)字(Numbers)

    SassScript支持兩種數(shù)字類型:帶單位數(shù)字不帶單位數(shù)字。(可正可負(fù)可為零,可正可浮點(diǎn))

    $my-age: 19;
    $your-age: 19.5;
    $height: 120px;
    
    // 注:?jiǎn)挝粫?huì)和數(shù)字當(dāng)做一個(gè)整體,進(jìn)行算數(shù)運(yùn)算

    3.空值(Null)

    只有一個(gè)取值null

    $value: null;
    
    // 注:由于它代表空,所以不能夠使用它與任何類型進(jìn)行算數(shù)運(yùn)算

    4.布爾型(Booleans)

    只有兩個(gè)取值:truefalse

    $a: true;
    $b: false;
    
    // 注:只有自身是false和null才會(huì)返回false,其他一切都將返回true

    5.數(shù)組 (Lists)

    通過(guò)空格或者逗號(hào)分隔的一系列的值。事實(shí)上,獨(dú)立的值也被視為數(shù)組 —— 只包含一個(gè)值的數(shù)組。索引從1開(kāi)始

    $list0: 1px 2px 5px 6px;
    $list1: 1px 2px, 5px 6px;
    $list2: (1px 2px) (5px 6px);

    數(shù)組中可以包含子數(shù)組,比如 1px 2px, 5px 6px 是包含 1px 2px5px 6px 兩個(gè)數(shù)組的數(shù)組。如果內(nèi)外兩層數(shù)組使用相同的分隔方式,需要用圓括號(hào)包裹內(nèi)層,所以也可以寫(xiě)成 (1px 2px) (5px 6px)。變化是,之前的 1px 2px, 5px 6px 使用逗號(hào)分割了兩個(gè)子數(shù)組 (comma-separated),而 (1px 2px) (5px 6px) 則使用空格分割(space-separated)。

    當(dāng)數(shù)組被編譯為 CSS 時(shí),Sass 不會(huì)添加任何圓括號(hào)(CSS 中沒(méi)有這種寫(xiě)法),所以 (1px 2px) (5px 6px)1px 2px, 5px 6px 在編譯后的 CSS 文件中是完全一樣的,但是它們?cè)?Sass 文件中卻有不同的意義,前者是包含兩個(gè)數(shù)組的數(shù)組,而后者是包含四個(gè)值的數(shù)組。

    () 表示不包含任何值的空數(shù)組(在 Sass 3.3 版之后也視為空的 map)。空數(shù)組不可以直接編譯成 CSS,比如編譯 font-family: () Sass 將會(huì)報(bào)錯(cuò)。如果數(shù)組中包含空數(shù)組或空值,編譯時(shí)將被清除,比如 1px 2px () 3px1px 2px null 3px

    基于逗號(hào)分隔的數(shù)組允許保留結(jié)尾的逗號(hào),這樣做的意義是強(qiáng)調(diào)數(shù)組的結(jié)構(gòu)關(guān)系,尤其是需要聲明只包含單個(gè)值的數(shù)組時(shí)。例如 (1,) 表示只包含 1 的數(shù)組,而 (1 2 3,) 表示包含 1 2 3 這個(gè)以空格分隔的數(shù)組的數(shù)組。

    6.映射(Maps)

    Maps必須被圓括號(hào)包圍,可以映射任何類型鍵值對(duì)(任何類型,包括內(nèi)嵌maps,不過(guò)不推薦這種內(nèi)嵌方式)

    $map: (
    $key1: value1,
    $key2: value2,
    $key3: value3
    )

    7.顏色 (Colors)

    CSS原有顏色類型,十六進(jìn)制、RGB、RGBA、HSL、HSLA和色彩單詞

    SCSS提供了內(nèi)置Colors函數(shù),從而更方便地使用顏色

    $color0: green;
    $color1: lighten($color, 15%);
    $color2: darken($color, 15%);
    $color3: saturate($color, 15%);
    $color4: desaturate($color, 15%);
    $color5: (green + red);

    四、運(yùn)算

    1.數(shù)字運(yùn)算符

    SassScript 支持?jǐn)?shù)字的加減乘除、取整等運(yùn)算 (+, -, *, /, %),如果必要會(huì)在不同單位間轉(zhuǎn)換值

    如果要保留運(yùn)算符號(hào),則應(yīng)該使用插值語(yǔ)法

    • +
    • // 純數(shù)字
      $add1: 1 + 2;// 3
      $add2: 1 + 2px; // 3px
      $add3: 1px + 2; // 3px
      $add4: 1px + 2px;//3px

      // 純字符串
      $add5: "a" + "b"; // "ab"
      $add6: "a" + b; // "ab"
      $add7: a + "b"; // ab
      $add8: a + b; // ab

      // 數(shù)字和字符串
      $add9: 1 + a;// 1a
      $adda: a + 1;// a1
      $addb: "1" + a; // "1a"
      $addc: 1 + "a"; // "1a"
      $addd: "a" + 1; // "a1"
      $adde: a + "1"; // a1
      $addf: 1 + "1"; // "11"// 總結(jié):
      a.純數(shù)字:只要有單位,結(jié)果必有單位
      b.純字符串:第一個(gè)字符串有無(wú)引號(hào)決定結(jié)果是否有引號(hào)
      c數(shù)字和字符串:第一位有引號(hào),結(jié)果必為引號(hào);第一位對(duì)應(yīng)數(shù)字非數(shù)字且最后一位帶有引號(hào),則結(jié)果必為引號(hào)
    • -
    • $add1: 1 - 2;// -1
      $add2: 1 - 2px; // -1px
      $add3: 1px - 2; // -1px
      $add4: 1px - 2px;//-1px

      $sub1: a - 1; // a-1
      $sub2: 1 - a; // 1-a
      $sub3: "a" - 1;// "a"-1
      $sub4: a - "1";// a-"1"// 總結(jié):
      每個(gè)字段必須前部分為數(shù)字,且兩個(gè)字段只能一個(gè)后部分是字符(因?yàn)榇藭r(shí)后綴被當(dāng)被單位看待了)。
      只要其中一個(gè)值首位不為數(shù)字的,結(jié)果就按順序去除空格后拼接起來(lái)
    • *
    • $num1: 1 * 2; // 2
      $mul2: 1 * 2px; // 2px
      $num3: 1px * 2; // 2px
      $num4: 2px * 2px;// 編譯不通過(guò)

      $num5: 1 * 2abc; // 2abc// 總結(jié):
      每個(gè)字段必須前部分為數(shù)字,且兩個(gè)字段只能一個(gè)后部分是字符(因?yàn)榇藭r(shí)后綴被當(dāng)被單位看待了)。其余編譯不通過(guò)
    • /
    • // 總結(jié):
      a.不會(huì)四舍五入,精確到小數(shù)點(diǎn)后5位
      b.每個(gè)字段必須前部分為數(shù)字,且當(dāng)前者只是單純數(shù)字無(wú)單位時(shí),后者(除數(shù))后部分不能有字符。其余結(jié)果就按順序去除空格后拼接起來(lái)。
      (因?yàn)榇藭r(shí)后綴被當(dāng)被單位看待了)
    • %
    • // 總結(jié):
      a.值與"%"之間必須要有空格,否則會(huì)被看做字符串

    2.關(guān)系運(yùn)算符

    大前提:兩端必須為數(shù)字前部分?jǐn)?shù)字后部分字符

    返回值:true or false

    • >
    • $a: 1 > 2; // false
    • <
    • $a: 1 > 2; // true
    • >=
    • $a: 1 >=2; // false
    • <=
    • $a: 1 <=2; // true

    3.相等運(yùn)算符

    作用范圍:相等運(yùn)算 ==, != 可用于所有數(shù)據(jù)類型

    返回值:true or false

    $a: 1==1px; // true
    $b: "a"==a; // true
    // 總結(jié):
    前部分為不帶引號(hào)數(shù)字時(shí),對(duì)比的僅僅是數(shù)字部分;反之,忽略引號(hào),要求字符一一對(duì)應(yīng)

    4.布爾運(yùn)算符

    SassScript 支持布爾型的 and or 以及 not 運(yùn)算。

    $a: 1>0 and 0>=5; // fasle
    // 總結(jié):
    值與"and"、"or"和"not"之間必須要有空格,否則會(huì)被看做字符串

    5.顏色值運(yùn)算

    顏色值的運(yùn)算是分段計(jì)算進(jìn)行的,也就是分別計(jì)算紅色,綠色,以及藍(lán)色的值

    • 顏色值與顏色值
    • p {
      color: #010203 + #040506;
      }

      // 計(jì)算 01 + 04=05 02 + 05=07 03 + 06=09,然后編譯為
      // p {
      color: #050709; }
    • 顏色值與數(shù)字
    • p {
      color: #010203 * 2;
      }

      // 計(jì)算 01 * 2=02 02 * 2=04 03 * 2=06,然后編譯為
      // p {
      color: #020406; }
    • RGB和HSL
    • // 如果顏色值包含 alpha channel(rgba 或 hsla 兩種顏色值),必須擁有相等的 alpha 值才能進(jìn)行運(yùn)算,因?yàn)樗阈g(shù)運(yùn)算不會(huì)作用于 alpha 值。

      p {
      color: rgba(255, 0, 0, 0.75) + rgba(0, 255, 0, 0.75);
      }

      // p {
      color: rgba(255, 255, 0, 0.75); }

    6.運(yùn)算優(yōu)先級(jí)

    1. ()
    2. */%
    3. +-
    4. ><>=<=

    五、嵌套語(yǔ)法



    六、雜貨語(yǔ)法

    1.插值語(yǔ)法

    通過(guò) #{} 插值語(yǔ)句可以在選擇器、屬性名和屬性值中使用變量。

    但大多數(shù)情況下,這樣使用屬性值可能還不如直接使用變量方便,但是使用 #{} 可以避免 Sass 運(yùn)行運(yùn)算表達(dá)式,直接編譯 CSS。

    $name: foo;
    $attr: border;
    p.#{$name} {
    #{$attr}-color: $name;
    }
    
    // 編譯后:
    p.foo {
    border-color: foo;
    }

    2.& in SassScript

    &為父選擇器

    a {
      color: yellow;
      &:hover{
          color: green;
      }
      &:active{
          color: blank;
      }
    }

    3.!default

    可以在變量的結(jié)尾添加 !default 給一個(gè)未通過(guò) !default 聲明賦值的變量賦值,此時(shí),如果變量已經(jīng)被賦值,不會(huì)再被重新賦值,但是如果變量還沒(méi)有被賦值,則會(huì)被賦予新的值。

    $content: "First content";
    $content: "Second content?" !default;
    $new_content: "First time reference" !default;
    
    #main {
    content: $content;
    new-content: $new_content;
    }
    
    // 編譯為:
    #main {
    content: "First content";
    new-content: "First time reference"; }

    注意:變量是 null 空值時(shí)將視為未被 !default 賦值。

    3.!global

    將局部變量提升為全局變量

    4.!optional

    如果 @extend 失敗會(huì)收到錯(cuò)誤提示,比如,這樣寫(xiě) a.important {@extend .notice},當(dāng)沒(méi)有 .notice 選擇器時(shí),將會(huì)報(bào)錯(cuò),只有 h1.notice 包含 .notice 時(shí)也會(huì)報(bào)錯(cuò),因?yàn)?h1a 沖突,會(huì)生成新的選擇器。

    如果要求 @extend 不生成新選擇器,可以通過(guò) !optional 聲明達(dá)到這個(gè)目的.

    簡(jiǎn)而言之:當(dāng)@extend相關(guān)代碼出現(xiàn)語(yǔ)法錯(cuò)誤時(shí),編譯器可能會(huì)給我們"亂"編譯為css,我們加上這個(gè)參數(shù)可以在出現(xiàn)問(wèn)題后不讓他編譯該部分代碼


    七、@-Rules與指令

    1.@import

    Sass 拓展了 @import 的功能,允許其導(dǎo)入 SCSS 或 SASS 文件。被導(dǎo)入的文件將合并編譯到同一個(gè) CSS 文件中,另外,被導(dǎo)入的文件中所包含的變量或者混合指令 (mixin) 都可以在導(dǎo)入的文件中使用。

    通常,@import 尋找 Sass 文件并將其導(dǎo)入,但在以下情況下,@import 僅作為普通的 CSS 語(yǔ)句,不會(huì)導(dǎo)入任何 Sass 文件。

    • 文件拓展名是 .css
    • 文件名以 http:// 開(kāi)頭;
    • 文件名是 url()
    • @import 包含 media queries。

    如果不在上述情況內(nèi),文件的拓展名是 .scss.sass,則導(dǎo)入成功。沒(méi)有指定拓展名,Sass 將會(huì)試著尋找文件名相同,拓展名為 .scss.sass 的文件并將其導(dǎo)入。

    @import "foo.scss";
    @import "foo";
    // 以上兩種方式均可
    
    
    // 以下方式均不可行
    @import "foo.css";
    @import "foo" screen;
    @import "http://foo.com/bar";
    @import url(foo);

    Sass 允許同時(shí)導(dǎo)入多個(gè)文件,例如同時(shí)導(dǎo)入 rounded-corners 與 text-shadow 兩個(gè)文件:

    @import "rounded-corners", "text-shadow";

    導(dǎo)入文件也可以使用 #{ } 插值語(yǔ)句,但不是通過(guò)變量動(dòng)態(tài)導(dǎo)入 Sass 文件,只能作用于 CSS 的 url() 導(dǎo)入方式:

    $family: unquote("Droid+Sans");
    @import url("http://fonts.googleapis.com/css?family=\#{$family}");
    
    // 編譯為:
    @import url("http://fonts.googleapis.com/css?family=Droid+Sans");

    如果你有一個(gè) SCSS 或 Sass 文件需要引入, 但是你又不希望它被編譯為一個(gè) CSS 文件, 這時(shí),你就可以在文件名前面加一個(gè)下劃線,就能避免被編譯。這將告訴 Sass 不要把它編譯成 CSS 文件。然后,你就可以像往常一樣引入這個(gè)文件了,而且還可以省略掉文件名前面的下劃線。

    除此之外,還支持嵌套 @import,但是不可以在混合指令 (mixin) 或控制指令 (control directives) 中嵌套 @import

    2.@media

    Sass 中 @media 指令與 CSS 中用法一樣,只是增加了一點(diǎn)額外的功能:允許其在 CSS 規(guī)則中嵌套。如果 @media 嵌套在 CSS 規(guī)則內(nèi),編譯時(shí),@media 將被編譯到文件的最外層,包含嵌套的父選擇器。這個(gè)功能讓 @media 用起來(lái)更方便,不需要重復(fù)使用選擇器,也不會(huì)打亂 CSS 的書(shū)寫(xiě)流程。

    .sidebar {
    width: 300px;
    @media screen and (orientation: landscape) {
      width: 500px;
    }
    }
    // 編譯為
    .sidebar {
    width: 300px;
    @media screen and (orientation: landscape) {
      width: 500px;
    }
    }
    @media`的 queries 允許互相嵌套使用,編譯時(shí),Sass 自動(dòng)添加 `and
    @media screen {
    .sidebar {
      @media (orientation: landscape) {
        width: 500px;
      }
    }
    }
    // 編譯為:
    @media screen and (orientation: landscape) {
    .sidebar {
      width: 500px; } }

    @media 甚至可以使用 SassScript(比如變量,函數(shù),以及運(yùn)算符)代替條件的名稱或者值

    $media: screen;
    $feature: -webkit-min-device-pixel-ratio;
    $value: 1.5;
    
    @media #{$media} and ($feature: $value) {
    .sidebar {
      width: 500px;
    }
    }
    // 編譯為:
    @media screen and (-webkit-min-device-pixel-ratio: 1.5) {
    .sidebar {
      width: 500px; } }

    3.*@extend

    @extend繼承。在設(shè)計(jì)網(wǎng)頁(yè)的時(shí)候常常遇到這種情況:一個(gè)元素使用的樣式與另一個(gè)元素完全相同,但又添加了額外的樣式。

    總的來(lái)看:支持層疊繼承、多繼承、允許延伸任何定義給單個(gè)元素的選擇器(但是允許不一定好用)

    a. 基本延伸

    .error {
    border: 1px #f00;
    background-color: #fdd;
    }
    .seriousError {
    @extend .error;
    border-width: 3px;
    }
    // 上面代碼的意思是將 .error 下的所有樣式繼承給 .seriousError,border-width: 3px; 是單獨(dú)給 .seriousError 設(shè)定特殊樣式,這樣,使用 .seriousError 的地方可以不再使用 .error。

    @extend 的作用是將重復(fù)使用的樣式 (.error) 延伸 (extend) 給需要包含這個(gè)樣式的特殊樣式(.seriousError

    注意理解以下情況:

    .error {
    border: 1px #f00;
    background-color: #fdd;
    }
    .error.intrusion {
    background-image: url("/image/hacked.png");
    }
    .seriousError {
    @extend .error;
    border-width: 3px;
    }
    // .error, .seriousError {
    border: 1px #f00;
    background-color: #fdd; }
    
    .error.intrusion, .seriousError.intrusion {
    background-image: url("/image/hacked.png"); }
    
    .seriousError {
    border-width: 3px; }

    當(dāng)合并選擇器時(shí),@extend 會(huì)很聰明地避免無(wú)謂的重復(fù),.seriousError.seriousError 將編譯為 .seriousError,不能匹配任何元素的選擇器也會(huì)刪除。

    b. 延伸復(fù)雜的選擇器:Class 選擇器并不是唯一可以被延伸 (extend) 的,Sass 允許延伸任何定義給單個(gè)元素的選擇器,比如 .special.coola:hover 或者 a.user[href^="http://"]

    c. 多重延伸:同一個(gè)選擇器可以延伸給多個(gè)選擇器,它所包含的屬性將繼承給所有被延伸的選擇器

    d. 繼續(xù)延伸:當(dāng)一個(gè)選擇器延伸給第二個(gè)后,可以繼續(xù)將第二個(gè)選擇器延伸給第三個(gè)

    e.*選擇器列:暫時(shí)不可以將選擇器列 (Selector Sequences),比如 .foo .bar.foo + .bar,延伸給其他元素,但是,卻可以將其他元素延伸給選擇器列。

    盡量不使用合并選擇器列,因?yàn)槿绻麘{個(gè)人推理的話,會(huì)出現(xiàn)排列組合的情況,所以SASS編譯器只會(huì)保留有用的組合形式,但依舊會(huì)存在排列組合的情況,有可能會(huì)留下隱患。

    1. 當(dāng)兩個(gè)列合并時(shí),如果沒(méi)有包含相同的選擇器,將生成兩個(gè)新選擇器:第一列出現(xiàn)在第二列之前,或者第二列出現(xiàn)在第一列之前
    2. #admin .tabbar a {
      font-weight: bold;
      }
      #demo .overview .fakelink {
      @extend a;
      }
      // 編譯為:
      #admin .tabbar a,
      #admin .tabbar #demo .overview .fakelink,
      #demo .overview #admin .tabbar .fakelink {
      font-weight: bold; }
    3. 如果兩個(gè)列包含了相同的選擇器,相同部分將會(huì)合并在一起,其他部分交替輸出
    4. #admin .tabbar a {
      font-weight: bold;
      }
      #admin .overview .fakelink {
      @extend a;
      }
      // 編譯為
      #admin .tabbar a,
      #admin .tabbar .overview .fakelink,
      #admin .overview .tabbar .fakelink {
      font-weight: bold; }

    f. 在指令中延伸

    在指令中使用 @extend 時(shí)(比如在 @media 中)有一些限制:Sass 不可以將 @media 層外的 CSS 規(guī)則延伸給指令層內(nèi)的 CSS.

    g. %placeholder為選擇器占位符,配合@extend-Only選擇器使用。

    效果:只定義了樣式,但不會(huì)對(duì)原有選擇器匹配的元素生效

    // example1:
    %img {
      color: red;
    }
    .path{
      @extend %img;
    }
    // 編譯后:
    .path {
    color: red;
    }
    // example2:
    #context a%extreme {
    color: blue;
    font-weight: bold;
    font-size: 2em;
    }
    // 編譯后:
    .notice {
    @extend %extreme;
    }
    
    // 注:必須是"."和"#"選擇器

    4.@at-root

    The @at-root directive causes one or more rules to be emitted at the root of the document, rather than being nested beneath their parent selectors. It can either be used with a single inline selector

    譯文:@at root指令使一個(gè)或多個(gè)規(guī)則在文檔的根發(fā)出,而不是嵌套在其父選擇器下。它可以與單個(gè)內(nèi)聯(lián)選擇器一起使用

    且@at-root 使多個(gè)規(guī)則跳出嵌套

    @at-root默認(rèn)情況下并不能使規(guī)則或者選擇器跳出指令,通過(guò)使用without和with可以解決該問(wèn)題

    了解即可

    5.@debug

    用于調(diào)試,按標(biāo)準(zhǔn)錯(cuò)誤輸出流輸出

    $size: 9px;
    
    .file{
    @debug $size;
    }

    6.@warn

    用于警告,按標(biāo)準(zhǔn)錯(cuò)誤輸出流輸出

    7.@error

    用于報(bào)錯(cuò),按標(biāo)準(zhǔn)錯(cuò)誤輸出流輸出

    序列

    @-rules

    作用

    1

    @import

    導(dǎo)入sass或scss文件

    2

    @media

    用于將樣式規(guī)則設(shè)置為不同的媒體類型

    3

    @extend

    以繼承的方式共享選擇器

    4

    @at-root

    轉(zhuǎn)到根節(jié)點(diǎn)

    5

    @debug

    用于調(diào)試,按標(biāo)準(zhǔn)錯(cuò)誤輸出流輸出

    6

    @warn

    用于警告,按標(biāo)準(zhǔn)錯(cuò)誤輸出流輸出

    7

    @error

    用于報(bào)錯(cuò),按標(biāo)準(zhǔn)錯(cuò)誤輸出流輸出


    八、控制指令

    1.if()

    三元運(yùn)算符

    表達(dá)式:if(expression, value1, value2)

    p {
      color: if(1 + 1=2, green, yellow);
    }
    
    // compile:
    p{
      color: green;}

    2.@if

    條件語(yǔ)句

    當(dāng) @if 的表達(dá)式返回值不是 false 或者 null 時(shí),條件成立,輸出 {} 內(nèi)的代碼

    @if 聲明后面可以跟多個(gè) @else if 聲明,或者一個(gè) @else 聲明。如果 @if 聲明失敗,Sass 將逐條執(zhí)行 @else if 聲明,如果全部失敗,最后執(zhí)行 @else 聲明

    • 單@if
    • p {
      @if 1 + 1==2 {
      color: red;
      }
      }

      // compile:
      p {
      color: red;
      }
    • @if - @else
    • p {
      @if 1 + 1 !=2 {
      color: red;
      } @else {
      color: blue;
      }
      }

      // compile:
      p {
      color: blue;
      }
    • @if - @else if - @else
    • $age: 19;

      p {
      @if $age==18 {
      color: red;
      } @else if $age==19 {
      color: blue;
      } @else {
      color: green;
      }
      }

      // compile:
      p {
      color: blue;
      }

    3.@for

    循環(huán)語(yǔ)句

    表達(dá)式:@for $var from <start> through <end>@for $var from <start> to <end>

    through 和 to 的相同點(diǎn)與不同點(diǎn):

    • 相同點(diǎn):兩者均包含的值
    • 不同點(diǎn):through包含的值,但to不包含的值
    @for $i from 1 through 3 {
    .item-#{$i} { width: 2em * $i; }
    }
    
    // compile:
    .item-1 {
    width: 2em; }
    .item-2 {
    width: 4em; }
    .item-3 {
    width: 6em; }

    4.@while

    循環(huán)語(yǔ)句

    表達(dá)式:@while expression

    @while 指令重復(fù)輸出格式直到表達(dá)式返回結(jié)果為 false。這樣可以實(shí)現(xiàn)比 @for 更復(fù)雜的循環(huán),只是很少會(huì)用到

    $i: 6;
    @while $i > 0 {
    .item-#{$i} { width: 2em * $i; }
    $i: $i - 2;
    }
    
    // compile:
    .item-6 {
    width: 12em; }
    .item-4 {
    width: 8em; }
    .item-2 {
    width: 4em; }

    5.@each

    循環(huán)語(yǔ)句

    表達(dá)式:$var in $vars

    $var 可以是任何變量名

    $vars` 只能是`Lists`或者`Maps
    • 一維列表
    • @each $animal in puma, sea-slug, egret, salamander {
      .#{$animal}-icon {
      background-image: url('/images/#{$animal}.png');
      }
      }

      // compile:
      .puma-icon {
      background-image: url('/images/puma.png'); }
      .sea-slug-icon {
      background-image: url('/images/sea-slug.png'); }
      .egret-icon {
      background-image: url('/images/egret.png'); }
      .salamander-icon {
      background-image: url('/images/salamander.png'); }
    • 二維列表
    • @each $animal, $color, $cursor in (puma, black, default),
      (sea-slug, blue, pointer),
      (egret, white, move) {
      .#{$animal}-icon {
      background-image: url('/images/#{$animal}.png');
      border: 2px solid $color;
      cursor: $cursor;
      }
      }

      // compile:
      .puma-icon {
      background-image: url('/images/puma.png');
      border: 2px solid black;
      cursor: default; }
      .sea-slug-icon {
      background-image: url('/images/sea-slug.png');
      border: 2px solid blue;
      cursor: pointer; }
      .egret-icon {
      background-image: url('/images/egret.png');
      border: 2px solid white;
      cursor: move; }
    • maps
    • @each $header, $size in (h1: 2em, h2: 1.5em, h3: 1.2em) {
      #{$header} {
      font-size: $size;
      }
      }

      // compile:
      h1 {
      font-size: 2em; }
      h2 {
      font-size: 1.5em; }
      h3 {
      font-size: 1.2em; }

    九、混合指令

    混合指令(Mixin)用于定義可重復(fù)使用的樣式,避免了使用無(wú)語(yǔ)意的 class,比如 .float-left。混合指令可以包含所有的 CSS 規(guī)則,絕大部分 Sass 規(guī)則,甚至通過(guò)參數(shù)功能引入變量,輸出多樣化的樣式。

    注意:這不是函數(shù)!沒(méi)有返回值!!

    1.定義混合指令

    混合指令的用法是在 @mixin 后添加名稱與樣式,以及需要的參數(shù)(可選)。

    // 格式:
    @mixin name {
      // 樣式....
    }
    // example:
    @mixin large-text {
    font: {
      family: Arial;
      size: 20px;
      weight: bold;
    }
    color: #ff0000;
    }

    2.引用混合樣式

    使用 @include 指令引用混合樣式,格式是在其后添加混合名稱,以及需要的參數(shù)(可選)。

    // 格式:
    @include name;
    
    // 注:無(wú)參數(shù)或參數(shù)都有默認(rèn)值時(shí),帶不帶括號(hào)都可以
    // example:
    p {
      @include large-text;
    }
    
    // compile:
    p {
    font-family: Arial;
    font-size: 20px;
    font-weight: bold;
    color: #ff0000;
    }

    3.參數(shù)

    格式:按照變量的格式,通過(guò)逗號(hào)分隔,將參數(shù)寫(xiě)進(jìn)Mixin名稱后的圓括號(hào)里

    支持默認(rèn)值;支持多參數(shù);支持不定參數(shù);支持位置傳參和關(guān)鍵詞傳參

    a. 位置傳參

    @mixin mp($width) {
      margin: $width;
    }
    
    body {
      @include mp(300px);
    }

    b.關(guān)鍵詞傳參

    @mixin mp($width) {
      margin: $width;
    }
    
    body {
      @include mp($width: 300px);
    }

    c.參數(shù)默認(rèn)值

    @mixin mp($width: 500px) {
      margin: $width;
    }
    
    body {
      @include mp($width: 300px);
      // or
      @include mp(300px);
    }

    d.不定參數(shù)

    官方:Variable Arguments

    譯文:參數(shù)變量

    有時(shí),不能確定混合指令需要使用多少個(gè)參數(shù)。這時(shí),可以使用參數(shù)變量 聲明(寫(xiě)在參數(shù)的最后方)告訴 Sass 將這些參數(shù)視為值列表處理

    @mixin mar($value...) {
      margin: $value;
    }

    4.向混合樣式中導(dǎo)入內(nèi)容

    在引用混合樣式的時(shí)候,可以先將一段代碼導(dǎo)入到混合指令中,然后再輸出混合樣式,額外導(dǎo)入的部分將出現(xiàn)在 @content 標(biāo)志的地方

    可以看作參數(shù)的升級(jí)版

    @mixin example {
      html {
          @content;
      }
    }
    @include example{
      background-color: red;
      .logo {
          width: 600px;
      }
    }
    
    // compile:
    html {
    background-color: red;
    }
    
    html .logo {
    width: 600px;
    }

    十、函數(shù)指令

    1.內(nèi)置函數(shù)

    a. 字符串函數(shù)

    索引第一個(gè)為1,最后一個(gè)為-1;切片兩邊均為閉區(qū)間

    函數(shù)名和參數(shù)類型

    函數(shù)作用

    quote($string)

    添加引號(hào)

    unquote($string)

    除去引號(hào)

    to-lower-case($string)

    變?yōu)樾?xiě)

    to-upper-case($string)

    變?yōu)榇髮?xiě)

    str-length($string)

    返回$string的長(zhǎng)度(漢字算一個(gè))

    str-index($string,$substring)

    返回$substring在$string的位置

    str-insert($string, $insert, $index)

    在$string的$index處插入$insert

    str-slice($string, $start-at, $end-at)

    截取$string的$start-at和$end-at之間的字符串

    b. 數(shù)字函數(shù)

    函數(shù)名和參數(shù)類型

    函數(shù)作用

    percentage($number)

    轉(zhuǎn)換為百分比形式

    round($number)

    四舍五入為整數(shù)

    ceil($number)

    數(shù)值向上取整

    floor($number)

    數(shù)值向下取整

    abs($number)

    獲取絕對(duì)值

    min($number...)

    獲取最小值

    max($number...)

    獲取最大值

    random($number?:number)

    不傳入值:獲得0-1的隨機(jī)數(shù);傳入正整數(shù)n:獲得0-n的隨機(jī)整數(shù)(左開(kāi)右閉)

    c. 數(shù)組函數(shù)

    函數(shù)名和參數(shù)類型

    函數(shù)作用

    length($list)

    獲取數(shù)組長(zhǎng)度

    nth($list, n)

    獲取指定下標(biāo)的元素

    set-nth($list, $n, $value)

    向$list的$n處插入$value

    join($list1, $list2, $separator)

    拼接$list1和list2;$separator為新list的分隔符,默認(rèn)為auto,可選擇comma、space

    append($list, $val, $separator)

    向$list的末尾添加$val;$separator為新list的分隔符,默認(rèn)為auto,可選擇comma、space

    index($list, $value)

    返回$value值在$list中的索引值

    zip($lists…)

    將幾個(gè)列表結(jié)合成一個(gè)多維的列表;要求每個(gè)的列表個(gè)數(shù)值必須是相同的

    d. 映射函數(shù)

    函數(shù)名和參數(shù)類型

    函數(shù)作用

    map-get($map, $key)

    獲取$map中$key對(duì)應(yīng)的$value

    map-merge($map1, $map2)

    合并$map1和$map2,返回一個(gè)新$map

    map-remove($map, $key)

    從$map中刪除$key,返回一個(gè)新$map

    map-keys($map)

    返回$map所有的$key

    map-values($map)

    返回$map所有的$value

    map-has-key($map, $key)

    判斷$map中是否存在$key,返回對(duì)應(yīng)的布爾值

    keywords($args)

    返回一個(gè)函數(shù)的參數(shù),并可以動(dòng)態(tài)修改其值

    e. 顏色函數(shù)

    • RGB函數(shù)
    • 函數(shù)名和參數(shù)類型函數(shù)作用rgb($red, $green, $blue)返回一個(gè)16進(jìn)制顏色值rgba($red,$green,$blue,$alpha)返回一個(gè)rgba;$red,$green和$blue可被當(dāng)作一個(gè)整體以顏色單詞、hsl、rgb或16進(jìn)制形式傳入red($color)從$color中獲取其中紅色值green($color)從$color中獲取其中綠色值blue($color)從$color中獲取其中藍(lán)色值mix($color1,$color2,$weight?)按照$weight比例,將$color1和$color2混合為一個(gè)新顏色
    • HSL函數(shù)
    • 函數(shù)名和參數(shù)類型函數(shù)作用hsl($hue,$saturation,$lightness)通過(guò)色相(hue)、飽和度(saturation)和亮度(lightness)的值創(chuàng)建一個(gè)顏色hsla($hue,$saturation,$lightness,$alpha)通過(guò)色相(hue)、飽和度(saturation)、亮度(lightness)和透明(alpha)的值創(chuàng)建一個(gè)顏色saturation($color)從一個(gè)顏色中獲取飽和度(saturation)值lightness($color)從一個(gè)顏色中獲取亮度(lightness)值adjust-hue($color,$degrees)通過(guò)改變一個(gè)顏色的色相值,創(chuàng)建一個(gè)新的顏色lighten($color,$amount)通過(guò)改變顏色的亮度值,讓顏色變亮,創(chuàng)建一個(gè)新的顏色darken($color,$amount)通過(guò)改變顏色的亮度值,讓顏色變暗,創(chuàng)建一個(gè)新的顏色hue($color)從一個(gè)顏色中獲取亮度色相(hue)值
    • Opacity函數(shù)


    • alpha($color)/opacity($color)獲取顏色透明度值rgba($color,$alpha)改變顏色的透明度opacify($color, $amount) / fade-in($color, $amount)使顏色更不透明transparentize($color, $amount) / fade-out($color, $amount)使顏色更加透明

    f. Introspection函數(shù)

    函數(shù)名和參數(shù)類型

    函數(shù)作用

    type-of($value)

    返回$value的類型

    unit($number)

    返回$number的單位

    unitless($number)

    判斷$number是否帶單位,返回對(duì)應(yīng)的布爾值

    comparable($number1, $number2)

    判斷$number1和$number2是否可以做加、減和合并,返回對(duì)應(yīng)的布爾值

    2.自定義函數(shù)

    Sass 支持自定義函數(shù),并能在任何屬性值或 Sass script 中使用

    Params: 與Mixin一致

    支持返回值

    基本格式:

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有