sass變數、嵌套、混合(mixin)、繼承拓展、@import、comment

来源:http://www.cnblogs.com/yinxingen/archive/2017/12/07/8000779.html
-Advertisement-
Play Games

變數、嵌套、混合(mixin)、繼承拓展、@import、comment 變數的意義 在sass里我們可以定義多個變數來存放顏色、邊框等等的樣式,這樣就可以在下麵想要使用樣式的時候使用變數了 這樣的優點就是便於維護,更改方便 變數的使用 可以通過$來定義變數,在變數名字中可以使用 和_來作為連接,並 ...


變數、嵌套、混合(mixin)、繼承拓展、@import、comment

變數的意義

在sass里我們可以定義多個變數來存放顏色、邊框等等的樣式,這樣就可以在下麵想要使用樣式的時候使用變數了

這樣的優點就是便於維護,更改方便


變數的使用

可以通過$來定義變數,在變數名字中可以使用-和_來作為連接,並且-和_是可以互通的,就是用起來一模一樣。

變數的值可以是字元串、數字、顏色等等,在變數里還可以使用其他變數,使用的時候直接寫變數名就好了

例如

$primary-color:#ff6600;
$primary-border:1px solid $primary_color;

div.box{
    background:$primary-color;
}

h1.page-header{
    border:$primary-border;
}

---》

div.box {
  background: #ff6600;
}

h1.page-header {
  border: 1px solid #ff6600;
}

嵌套的使用

合理的使用嵌套語法,可以使我們編寫代碼更為快捷

假設我們想寫這樣的css:

.nav {
  height: 100px;
}
.nav ul {
  margin: 0;
}
.nav ul li {
  float: left;
  list-style: none;
  padding: 5px;
}

在sass里我們可以這樣寫

.nav{
    height:100px;
    ul{
        margin:0;
        li {
            float:left;
            list-style:none;
            padding:5px;
        }
    }
}

大家會發現,寫出來的代碼父和子之間都有空格隔開,如果我們需要給a加上偽類的話我們這樣寫

.nav{
    height:100px;
    a{
        color:#fff;
        :hover{
            color:#ff6600;
        }
    }
}

在裡面就會出現這樣的情況

.nav a :hover {
  color: #ff6600;
}

我們發現在a和:hover之間有了空格,這樣是不好的,所以我們需要在寫的時候在:hover之前把a加上,這樣就需要用到在之類里引用父類選擇器的方式,我們可以用&符號代替父類

例如:

.nav{
    height:100px;
    a{
        color:#fff;
        &:hover{
            color:#ff6600;
        }
    }
}

這樣就好了,下麵來個完整的代碼:

.nav{
    height:100px;
    ul{
        margin:0;
        li{
            float:left;
            list-style:none;
            padding:5px;
        }
        a{
            display:block;
            color:#000;
            &:hover{
                color:#f60;
                background:red;
            }
        }
    }

    & &-text{
        font-size:15px;
    }
}

-----》

.nav {
  height: 100px;
}
.nav ul {
  margin: 0;
}
.nav ul li {
  float: left;
  list-style: none;
  padding: 5px;
}
.nav ul a {
  display: block;
  color: #000;
}
.nav ul a:hover {
  color: #f60;
  background: red;
}
.nav .nav-text {
  font-size: 15px;
}

嵌套屬性

我們可以把一些個複合屬性的子屬性來嵌套編寫,加快編寫速度,例如

body{
    font:{
        family:Helvitica;
        size:15px;
        weight:bold;
    }
}
.nav{
    border:1px solid red{
        left:none;
        right:none;
    }
}

.page-next{
    transition:{
        property:all;
        delay:2s;
    }
}

-----》

body {
  font-family: Helvitica;
  font-size: 15px;
  font-weight: bold;
}

.nav {
  border: 1px solid red;
  border-left: none;
  border-right: none;
}

.page-next {
  transition-property: all;
  transition-delay: 2s;
}

mixin 混合

你可以把它想象成一個有名字的定義好的樣式

每一個mixin都有自己的名字,類似於js里的函數定義方法如下

@mixin 名字(參數1,參數2...){
    ...
}

使用方法是在其他選擇器css樣式里通過@include引入,其實就相當於將mixin里的代碼寫入到這個選擇器的css里,如下:

@mixin alert {
    color:#f60;
    background-color:#f60;
    a{
        color:pink;
    }
    &-a{
        color:red;
    }
}

.alert-warning{
    @include alert;
}

-----》

.alert-warning {
  color: #f60;
  background-color: #f60;
}
.alert-warning a {
  color: pink;
}
.alert-warning-a {
  color: red;
}

剛纔是沒有參數的mixin,mixin也可以擁有參數,需要註意的是:

  • 形參的名字前要加$
  • 傳參的時候只寫值的話要按順序傳
  • 傳參的時候不想按順序的話需要加上形參名字

例如:

@mixin alert($color,$background) {
    color:$color;
    background-color:$background;
    a{
        color:darken($color,10%);//把顏色加深百分之十
    }
}

.alert-warning{
    @include alert(red,blue);
}

.alert-info{
    @include alert($background:red,$color:blue);
}

------》

.alert-warning {
  color: red;
  background-color: blue;
}
.alert-warning a {
  color: #cc0000;
}

.alert-info {
  color: blue;
  background-color: red;
}
.alert-info a {
  color: #0000cc;
}

繼承拓展 extend

如果我們有一個選擇器想要擁有另一個選擇所有的東西,不管是樣式還是子元素等等,可以使用@extend來繼承

大家需要註意的是,++b繼承a的時候,a的子元素設置了樣式,也會給b的子元素設置樣式++,達到完全一樣的情況,例如:

.alert {
    padding:5px;
}

.alert a {
    font:{
        weight:bold;
        size:15px;
    }
}

.alert-info {
    @extend .alert;
    backgournd:skyblue;
}

----》

.alert, .alert-info {
  padding: 5px;
}

.alert a, .alert-info a {
  font-weight: bold;
  font-size: 15px;
}

.alert-info {
  backgournd: skyblue;
}

partials

在以前咱們編寫css的時候,一個css引入另一個css需要使用@import,其實這是不好的,會多發一次http請求,影響咱們站點的響應速度。

在sass里,咱們可以把小的sass文件分出去,叫做partials,在某個sass里通過@import ‘partials名’去引入,註意路徑喲,這樣的話就可以把partials里的代碼引到咱們大的sass里一起編譯

  • 需要註意的是 partials的文件名前要加_
_base.sass :
body{
    margin:0;
    padding:0;
}
style.sass :
@import "base";

.alert {
    padding:5px;
}

.alert a {
    font:{
        weight:bold;
        size:15px;
    }
}

.alert-info {
    @extend .alert;
    backgournd:skyblue;
}

----------->

body {
  margin: 0;
  padding: 0;
}

.alert, .alert-info {
  padding: 5px;
}

.alert a, .alert-info a {
  font-weight: bold;
  font-size: 15px;
}

.alert-info {
  backgournd: skyblue;
}

這樣的話我們就可以把模塊化的思想引入到sass里了


comment註釋

sass里的註釋有三種

  • 多行註釋
  • 單行註釋
  • 強制註釋

多行註釋:壓縮後不會出現在css里 /* */

單行註釋: 不會出現在css里 //

強制註釋:壓縮後也會出現在css里 /! /


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

-Advertisement-
Play Games
更多相關文章
  • weex旨在“一次撰寫,多端使用”,意思是,用weex寫的頁面,不論是Android還是iOS甚至web端都可以使用,這樣的話就可以極大的降低開發成本, weex其實就是寫的一個類似於h5的頁面(js編寫),寫完之後將vue文件編譯、部署到Nginx伺服器上(Nginx伺服器後面會講到),這時候在... ...
  • 插件介紹 這是一個我在寫以前的項目的途中發現的一個國人寫的jQuery圖像裁剪插件,當時想實現用戶資料的頭像上傳功能,並且能夠預覽圖片,和對圖片進行簡單的裁剪、旋轉,花了不少時間才看到了這個插件,感覺功能挺全面,代碼實現起來也挺簡單,再加上用的是Bootstrap,對移動端操作也有適配,於是就用了。 ...
  • 對於剛開始學習js的同學,強烈推薦直接使用chrome developer mode,超級方便。 隨便打開一個網頁,開啟開發者模式即可寫js代碼,不用新建html和js文件即可看到自己寫的js代碼的結果 如下: 甚至連console.log();都可以不用就能看到輸出結果,是不是很方便。 開啟開發者 ...
  • <html><head> <meta charset="utf-8"> <title>Swiper輪播</title></head><body> <div class="swiper-container" id="Exhibition-swiper" style="width:800px"> <di ...
  • 這是繼前兩篇後的第三篇,這一章主要是說關於react裡面樣式的一些問題,這樣讓你頁面構建更加美觀。 ...
  • 一般元素在頁面所占的空間包括:magin border padding content。以前一直以為子元素設置百分比寬高都是以父元素的content值為基準計算的。但是當子元素的position不同時,卻是不同的結果。 demo 用如下小demo測試: 效果如下: 子元素以父元素的content寬度 ...
  • $("#ZB").attr("ondrawsummarycell", "ondrawsummarycell"); // ZBMX需要替換為子表對應控制項的控制項編號 彙總數據 $("#ZB").attr("ondrawcell", "ondrawcell"); // ZBMX需要替換為子表對應控制項的控制項... ...
  • git是什麼 簡單來說,Git,它是一個快速的 分散式版本控制系統 。 同傳統的 集中式版本控制系統 不同,Git的分散式特性使得開發者間的協作變得更加靈活多樣。 這時候我們會想到: 1. 什麼又是版本控制呢? 2. 什麼是分散式什麼是集中式? 我們帶著問題往下走。 版本控制 版本控制是一種記錄一個 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...