sass 混合指令 (Mixin Directives)詳解

来源:https://www.cnblogs.com/top8/archive/2022/07/15/16480579.html
-Advertisement-
Play Games

混合指令(Mixin)用於定義可重覆使用的樣式,避免了使用無語意的 class,比如 .float-left。混合指令可以包含所有的 CSS 規則,絕大部分 Sass 規則,甚至通過參數功能引入變數,輸出多樣化的樣式。 ...


​ 混合指令(Mixin)用於定義可重覆使用的樣式,避免了使用無語意的 class,比如 .float-left。混合指令可以包含所有的 CSS 規則,絕大部分 Sass 規則,甚至通過參數功能引入變數,輸出多樣化的樣式。

​ mixin是可以重用的一組CSS聲明。mixin有助於減少重覆代碼,只需聲明一次,就可在文件中引用。

​ 可以看出,mixin類似變數,不同的是變數存儲值,mixin存儲一組css聲明。mixin可以傳入參數。

定義與使用混合指令 @mixin

@mixin mixin-name([param1,[param2...]]) {
	/* css 聲明 */
}

例1:標準形式

// 定義頁面一個區塊基本的樣式
@mixin block {
    width: 96%;
    margin-left: 2%;
    border-radius: 8px;
    border:1px #f6f6f6 solid;
}
// 使用混入
.container{
    .block{
        @include block;
	}
}

生成結果

.container .block { 
    width: 96%; 
    margin-left: 2%; 
    border-radius: 8px; 
    border: 1px #f6f6f6 solid; 
}

例2:嵌入選擇器

// 定義警告字體樣式,下劃線(_)與橫線(-)是一樣的
@mixin warning-text {
    .warn-text{
        font-size: 12px;
        color: rgb(255, 253, 123);
        line-height: 180%;
    }
}
// 使用混入
.container{
    @include warning-text;
}

編譯結果

.container .warn-text { 
    font-size: 12px; 
    color: #fffd7b; 
    line-height: 180%; 
}

例3:使用變數

// 定義flex佈局元素縱軸的排列方式
@mixin flex-align($aitem){
    -webkit-box-align:$aitem;
    -webkit-align-items:$aitem;
    -ms-flex-align:$aitem;
    align-items:$aitem;
}
// 只有一個參數,直接傳遞參數
.container{
    @include flex-align(center);
}
// 給指定參數指定值
.footer{
    @include flex-align($aitem:center);
}

例4:使用變數(多參數)

// 定義塊元素內邊距
@mixin block-padding($top,$right,$bottom,$left){
    padding-top: $top;
    padding-right: $right;
    padding-bottom: $bottom;
    padding-left: $left;
}

使用一

// 按照參數順序賦值
.container{
    @include block-padding(10px,20px,30px,40px);
}

使用二

// 可指定參數賦值
.container{
    @include block-padding($left:20px, $top:10px, $bottom: 10px, $right:30px);
}

只想設置兩個邊:

// 可指定參數賦值
.container{
    @include block-padding($left:10px, $top:10px, $bottom:0, $right:0);
}

問題:必須指定4個值?????

例5:指定預設值

// 定義塊元素內邊距,參數指定預設值
@mixin block-padding($top:0,$right:0,$bottom:0,$left:0){
    padding-top: $top;
    padding-right: $right;
    padding-bottom: $bottom;
    padding-left: $left;
}

靈活使用

// 可指定參數賦值
.container{
    // 不帶參數
    //@include block-padding;

    //按順序指定參數值
    //@include block-padding(10px,20px);

    //給指定參數指定值
    @include block-padding($left:10px,$top:20px)
}

例6:可變參數

參數不固定的情況

** 
    *定義線性漸變
    *@param $direction  方向
    *@param $gradients  顏色過度的值列表
 */
@mixin linear-gradient($direction, $gradients...) {
    background-color: nth($gradients,1);
    background-image: linear-gradient($direction, $gradients);
}

使用

.table-data{
    @include linear-gradient(to right,#F00, orange, yellow);
}

這就是“老姚”給大家整理的scss中混入@mixin指令的一些使用,希望對你有幫助。


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

-Advertisement-
Play Games
更多相關文章
  • 備份和恢覆命令 備份庫 直接在cmd視窗中直接輸入,結束不需要輸入; mysqldump -h埠號 -u用戶名 -p密碼 資料庫名>備份地址 恢復庫 在cmd視窗中進行 1、連接資料庫 mysql -u用戶名 -p密碼 2、創建資料庫 create database 庫名 3、切換到可用資料庫 u ...
  • 1 Hive基本概念 Hive是一個構建在Hadoop上的數據倉庫框架。最初,Hive是由Facebook開發,後來移交由Apache軟體基金會開發,並作為一個Apache開源項目。 Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張資料庫表,並提供類SQL查詢功能。 其 ...
  • 7月14日,騰訊雲資料庫TDSQL PG版的開源版本(開源代號TBase)迎來又一次重大升級:升級後的TDSQL PG V2.4.0版在2PC事務方面得到優化,易用性大幅提升,具備更強的分散式計算性能。 TDSQL PG版是一款具備HTAP(混合事務分析處理)能力、經過騰訊多年持續投入研發的資料庫產 ...
  • 表tbl有a,b,c三個欄位,其中a是主鍵,b上建了索引,然後編寫sql語句SELECT * FROM tbl WHERE a=1這樣不會產生回表,因為所有的數據在a的索引樹中均能找到SELECT * FROM tbl WHERE b=1這樣就會產生回表,因為where條件是b欄位,那麼會去b的索引 ...
  • 【2022年7月15日,杭州】HUAWEI Developer Day(華為開發者日,簡稱HDD)杭州站拉開帷幕。在數字經濟不斷發展的今天,開發者對圖形圖像的開發需求更加深入和多樣化,從虛擬環境重構到用戶交互再到視覺呈現,開發者對於數字世界存在一個完整的需求鏈條。在HMS Core.Sparkle應 ...
  • 目前很多應用都有身份證、銀行卡一鍵識別功能,但面對各種會員卡、通行證、駕駛證、行駛證等日常生活中經常用到的卡證,因為不同商家的卡號位置,版面樣式各異,所以無法使用類似身份證的專門的身份證識別API,如果要在旅游類App、商超類App等手動輸入卡證號碼,不僅繁瑣還容易出錯,沒有很好的交互體驗。此時,使 ...
  • 生命周期 組件從開始到結束的全過程 創建階段:beforeCreate、created 掛載階段:beforeMount、mounted 更新階段:beforeUpdate、updated 銷毀階段:beforeDestroy、destroyed 與動態組件有關的兩個特殊的鉤子: activated ...
  • 自己的官方模板一直沒有弄,今天看到了一個不錯的主題網站,於是果斷尋求方法進行美化,看了不少博客園的博客,發現一些博客非常驚艷,這些基本都屬於自己定製的,於是開始自定義美化起來。 1. 開通javaScript許可權 進入管理>設置>勾選下麵的JS許可權,然後填寫一下開通的理由等待管理員進行審核通過。 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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...