sass 基礎——回顧

来源:http://www.cnblogs.com/nmxs/archive/2017/02/10/6388401.html
-Advertisement-
Play Games

1.webstorm 自動編譯SASS 下載安裝包 http://rubyinstaller.org/downloads/ 然後點擊安裝,路徑為預設路徑就行, 勾選以下兩項 add Ruby executables to your PATH Associate .rb and rbw files w ...


1.webstorm 自動編譯SASS
  下載安裝包 http://rubyinstaller.org/downloads/
  然後點擊安裝,路徑為預設路徑就行, 勾選以下兩項
    add Ruby executables to your PATH
    Associate .rb and rbw files with this Ruby information
  安裝完,打開命令行 輸入 gem install sass
  webstorm 配置 點擊setting選擇tool下的file watcher 如下圖:

   

  

  

  

2.SCSS 和 Sass 的區別。
    SCSS 是 Sass 引入新的語法,其語法完全相容css3,並且繼承了Sass的強大的功能,SCSS 是CSS的超級(擴展),

      因此,所有在CSS 中正常工作的代碼也能在SCSS 中正常的工作。

3. 使用變數:
    變數聲明 $highlight-color: #f90; 如果一個變有多個值可以用逗號分隔。如:
      $plain-font: "Myriad Pro"、Myriad、"Helvetica Neue";
    當變數定義在css 規則內,那麼該變數只能在此規則內使用
      變數引用: 例如:
        $highlight-color: #F90;
        .selected {
            border: 1px solid $highlight-color;
          }
        //編譯後
        .selected {
            border: 1px solid #F90;
          }
      變數名用中劃線還是下劃線
      中劃線命名的內容和下劃線命名的內容是互通的
        $link-color: blue;
          a {
            color: $link_color;
          }
        //編譯後
         a {
            color: blue;
        }

4.嵌套css 規則
    #content {
        article {
          h1 { color: #333 }
          p { margin-bottom: 1.4em }
        }
      aside { background-color: #EEE }
    }
     /* 編譯後 */
    #content article h1 { color: #333 }
    #content article p { margin-bottom: 1.4em }
    #content aside { background-color: #EEE }
  父選擇器的標識符&;
    &符號,可以放在任何一個選擇器可以出現的地方。
      article a {
          color: blue;
          &:hover { color: red }
        }
      /* 編譯後 */
      article a{color:blue}
      article a:hover {color: red}
  群組選擇器的嵌套
    .container {
        h1, h2, h3 {margin-bottom: .8em}
    }
      /* 編譯後 */
    .container h1, .container h2, .container h3 { margin-bottom: .8em }
  內嵌在群組中的選擇器:
    nav, aside {
      a {color: blue}
    }
      /* 編譯後 */
    nav a, aside a {color: blue}
  子組合選擇器和同組合選擇器 : > , + 和 ~ ;
    article section { margin: 5px }
      選擇article 下的所有的命名中的 section 選擇器的元素。
    article > section { border: 1px solid #ccc }
      選擇器只會選擇article 下緊跟著的子元素中命名section選擇器的元素。
    header + p { font-size: 1.1em }
      選擇同層相鄰的選擇器,選擇header 後面緊跟著的p 元素。
    article ~ article { border-top: 1px dashed #ccc }
  同層全體組合選擇器,選擇所有article 後的同層article元素。

    article {
        ~ article { border-top: 1px dashed #ccc }
        > section { background: #eee }
        dl > {
          dt { color: #333 }
          dd { color: #555 }
        }
      nav + & { margin-top: 0 }
    }
      /* 編譯後 */
    article ~ article { border-top: 1px dashed #ccc }
    article > footer { background: #eee }

5.導入SASS 文件
  使用sass的@import規則並不需要指明被導入文件的全名。
  你可以省略.sass或.scss文件尾碼
  舉例來說,@import"sidebar";這條命令將把sidebar.scss
  文件中所有樣式添加到當前樣式表中

  當你@import一個局部文件時,還可以不寫文件的全名,
  即省略文件名開頭的下劃線 舉例來說,你想導入
  themes/_night-sky.scss這個局部文件里的變數,
  你只需在樣式表中寫@import "themes/night-sky";。
  預設變數值:
    在一般的情況下,反覆生命一個值,最後一次生命會覆蓋前面
    的聲明。
  強制覆蓋 !default ,用於變數。
    例如:
      $fancybox-width: 400px !default;
      .fancybox {
        width: $fancybox-width;
      }
  嵌入導入:
    sass 允許@import 命令寫在css 規則內,這種導入方式下,生產的css文件是,局部
    文件會被插入到css 規則內導入它的地方,舉個例子,一個名為_blue-theme.scss
    的局部文件,內容如下。
      aside {
        background: blue;
        color: white;
      }
      .blue-theme {@import "blue-theme"}
      //生成的結果跟你直接在.blue-theme選擇器內寫_blue-theme.scss文件
        的內容完全一樣。
      . blue-theme {
          aside {
            background: blue;
            color: #fff;
          }
      }
  原生的CSS導入
    由於sass 相容原生的css 所以它支持原生的css@import
      ● 被導入文件的名字以.css結尾;
      ● 被導入文件的名字是一個URL地址(比如http://www.sass.hk/css/css.css),由此可用谷歌字體API提供的相應服務;
      ● 被導入文件的名字是CSS的url()值。
6.靜默註釋
  sass 另外提供了一種不同於css 的註釋。它以 // 開頭,註釋內容直到末行。
    body {
      color: #333; // 這種註釋內容不會出現在生成的css文件中
      padding: 0; /* 這種註釋內容會出現在生成的css文件中 */
    }

7.混合器:
  混合器使用@mixin 標識符定義。
    例如:
      @mixin rounded-corners {
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        border-radius: 5px;
    }
  然後就可以在你的樣式表中通過@include來使用這個混合器,
  放在你希望的任何地方。@include調用會把混合器中的所有
  樣式提取出來放在@include被調用的地方。如果像下邊這樣寫:
    notice {
      background-color: green;
      border: 2px solid #00aa00;
      @include rounded-corners;
    }
      //sass最終生成:
    .notice {
      background-color: green;
      border: 2px solid #00aa00;
      -moz-border-radius: 5px;
      -webkit-border-radius: 5px;
      border-radius: 5px;
    }

  給混合器傳參:
    通過在@include 混合器時給混合器傳參,來指定混合器生成的精確樣式,當
      @include 混合器時,參數其實就是可以給css 屬性值的變數。
      @mixin link-colors($normal,$hover,$visited) {
          color: $normal;
          $:hover {color:$hover;}
          $:visited {color:$visited;}
      }

    當混合器被@include 時,你可以把它當做一個css 函數來傳參。
      a{
        @include link-colors(blue, red,green)
      }
      // Sass 最終生成的是
      a{color:blue;}
      a:hover {color:red;}
      a:visited { color: green;}
    sass 允許通過語法 $name:value 的形式指定每個參數的值,這種形式,
    的傳參,參數順序就不必在乎了,只要保證沒有漏掉參數即可。
    a {
    @include link-colors(
      $normal: blue,
      $visited: green,
      $hover:red
      );
    }

  預設參數值:
      為了在@include 混合器時傳入所有的參數,我們可以給參數制定一個預設值。
      參數預設值使用: $name: default-value 的生命形式。
      @mixin link-colors(
        $normal,
        $hover: $normal,
        $visited: $normal
      )
      {
        color: $normal;
        $:hover { color: $hover;}
        $:visited { color: $visited;}
      }
    如果這樣調用: @include link-colors(red) $hover 和$visited
      也會自動賦值為red.
8.選擇器繼承
    通過@extend 語法實現
    // 通過選擇器繼承樣式
      .error {
        border: 1px red;
        background-color: #fdd;
      }
      .seriousError {
        @extend .error;
        border-width: 3px;
      }


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 兩年的JAVA工作。對於整個JAVA行業來說還是太短, 很佩服那些大牛。 沒事的時候經常在想,那些七八年以上的JAVA都會或者需要哪些牛逼的技術,當然也不排除混工資資歷的。我也明顯不想成為那樣的人。 兩年的JAVA工作。需要學習的技術還非常多。現在的狀況無非有兩種選擇:1.應付工作,混混工資。當然目 ...
  • 目的 安裝JDK 9, 練習Jshell工具的使用, 體驗Java的互動式編程環境。 什麼是Jshell 其實就是一個命令行工具,安裝完JDK9後,可以在bin目錄下找到該工具,與Python的解釋器極其相似,用過Python解釋器的人應該會非常熟悉。 它可以讓你體驗互動式編程,有一些比較有趣的特性 ...
  • 參數問題 在映射文件中通過parameterType指定輸入參數的類型;在映射文件中通過resultType指定輸出結果的類型。 占位符和拼接符問題 #{}表示一個占位符號,#{}接收輸入參數,類型可以是簡單類型,pojo、hashmap。 如果接收簡單類型,#{}中可以寫成value或其它名稱。 ...
  • 字元串可以用單引號 ('...') 或雙引號 ("...") 標識 。 \ 可以用來轉義引號;情形一: 如果字元串中只有單引號而沒有雙引號,就用雙引號引用,否則用單引號引用。 比如要列印: doesn't: >>>"doesn't" "yes",he said >>>'"yes",he said ' ...
  • 1、只有輸出流才有列印流:PrintWriter和PrintStream分別針對字元和位元組,提供了重載的print,Println方法用於多種數據類型的輸出。PrintWriter和PrintStream操作不會拋出異常,數據沒列印出來也不會拋異常。 2、System.out.print(Objec ...
  • 扣減庫存策略採用訂單是否鎖定庫存方案 在訂單系統中用戶下訂單流程中,有一個重要環節是“扣減庫存”;而此“扣減庫存”採用的策略是直接在一個商品庫存欄位中的庫存數據減去訂單商品數量;如: update productStock set quantity = quantity -1 where produ ...
  • Tocify是一個jQuery插件,能夠動態的生成文章目錄,Tocify可以隨意的設置Twitter Bootstrap 或者 jQueryUI Themeroller支持的可選動畫和jQuery的顯示/隱藏效果,Tocify還支持平滑滾動,向前和向後按鈕支持,可以監聽瀏覽器的滾動顯示當前的目錄結構 ...
  • 電腦領域的都多少掌握一點演算法知識,其中排序演算法是《數據結構與演算法》中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是數據記錄在記憶體中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...