SASS 學習筆記 II

SASS 學習筆記 II

上篇筆記,SASS 學習筆記 中包含:

  • 配置

  • 變量

  • 嵌套

    這里加一個擴展,嵌套中有一個 & 的用法,使用 & 可以指代當前 block 中的 selector,后面可以追加其他的選擇器。如當前的 scope 是 form,可以在嵌套中使用 &-selector 指代 form-selector,如:

    HTML 有:

    <!-- Navbar -->
    <nav class="navbar"><div class="navbar-navigation"><div class="navbar-navigation-left"></div><div class="navbar-navigation-right"></div></div>
    </nav>
    <!-- End of Navbar -->
    

    scss 寫:

    .navbar {&-navigation {&-left {}&-right {}}
    }
    
  • 擴展

  • mixin

  • function

  • placeholder selector

  • import & partials

這部分就這剩下的一些特性/功能去學習一下,過了一遍剩下的內容,SCSS 也差不多學完了。

SCSS 高級特性

數據類型

  • 數字

    這個基本是數字單位,如 100px,100%,100,0.1 等

  • 字符串

    這個常用于字體類和 string interpolation,如 font-family: 'Arial',string interpolation 下面會說

  • 顏色

    hex、hsl、rgb 這種

  • 布爾值

  • list

    SCSS 中的 list 一般用逗號做分隔符,不過有些和 css 一致的可以用空格,如:

    // 不用字符串 sass 會提示報錯,node-sass好像沒什么問題就是了
    $colors: 'red', 'orange';
    $box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    
  • map

    用法如下:

    $colors: (primary: red,secondary: green,tertiary: blue,
    );// 獲取方式使用內置的 map-get
    html {background-color: map-get($colors, primary);
    }
    

    我個人覺得 map 獲取單一值的意義不大,不過搭配上變量+循環/if 進行配置之類的倒是很方便。

  • null

    一般不存在的值 SCSS 默認就是 null,出現獲取/使用 null 的時候,終端也會報錯。

  • 特殊

    global, selector 和 function

interpolation

interpolation 就是一個將變量、表達式或選擇器轉換成一個字符串的方式,語法就是使用 #{},使用方法有:

$color: red;body {color: #{$color};
}$selector: '.button';
#{$selector}: {background-color: #{$color};
}

同樣,這種搭配循環/if 很好用。

for 循環

語法為:@for $i from <start> through <end> {}@for $i from <start> to <end> {},前者包含 end,后者不包。

同樣搭配上面介紹過的一些特性會比較好用,如:

$colors2: (1: red,2: green,3: blue,4: orange,
);// @for $i from 1 to 4, 4 is exclude
@for $i from 1 through 4 {.paragraph-#{$i} {background-color: map-get($map: $colors2, $key: $i);}
}

編譯后的結果為:

.paragraph-1 {background-color: red;
}.paragraph-2 {background-color: green;
}.paragraph-3 {background-color: blue;
}.paragraph-4 {background-color: orange;
}

each 循環

有點像 JS 的 for each,如果只是想獲取 list 中的值,用 @each 會方便一些,也可以不需要用 map-get

如上面的循環用 each 的寫法為:

@each $i, $c in $colors2 {.paragraph-#{$i} {background-color: #{$c};}
}

這里不使用解構的方法也可以用 nth() 實現,如:

@each $item in $colors2 {.paragraph-#{nth($item, 1)} {background-color: #{nth($item, 2)};}
}

就是沒這么方便。

if

也是 if/else-if/else 的用法,我覺得這種用在 media query 特別的方便。

案例

slideshow

這個主要還是用 animation 來實現的,不過使用 SCSS 的循環確實很方便,原生 CSS 定義 delay 的寫法為:

.slideshow-slide:nth-child(1) {animation-delay: 0s;
}
.slideshow-slide:nth-child(2) {animation-delay: 4s;
}
.slideshow-slide:nth-child(3) {animation-delay: 8s;
}
.slideshow-slide:nth-child(4) {animation-delay: 12s;
}
.slideshow-slide:nth-child(5) {animation-delay: 16s;
}

使用 SCSS 的寫法:

$animList: 1 0s, 2 4s, 3 8s, 4 12s, 5 16s;@each $item in $animList {.slideshow-slide:nth-child(#{nth($item, 1)}) {animation-delay: nth($item, 2);}
}

或者

$animList: 1, 2, 3, 4, 5;@each $item in $animList {.slideshow-slide:nth-child(#{$item}) {animation-delay: #{($item - 1) * 4}s;}
}

同樣的寫法也可以搭配 nth-child

$socialMediaColors: 1 #3b5998, 2 #b31217, 3 #dc4e41, 4 #55acee, 5 #517fa4, 6#0077b5;@each $color in $socialMediaColors {.social-icons-item:nth-child(#{nth($color, 1)}) .social-icons-link {color: nth($color, 2);border: 0.1rem solid nth($color, 2);}
}

最終完成的效果:

在這里插入圖片描述

media query

media query 主要依賴 mixin,用法如下:

@mixin response($breakpoint) {@if ($breakpoint == xl) {@media (max-width: 1200px) {@content;}} @else if ($breakpoint == lg) {@media (max-width: 1000px) {@content;}} @else if ($breakpoint == md) {@media (max-width: 760px) {@content;}} @else if ($breakpoint == sm) {@media (max-width: 560px) {@content;}}
}html {font-size: 62.5%;@include response(md) {font-size: 56.25%;}@include response(sm) {font-size: 50%;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43000.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43000.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43000.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GuLi商城-前端基礎Vue-使用Vue腳手架進行模塊化開發

自己親自實踐&#xff1a; mac安裝webpack webpack 簡介Webpack 是一個非常流行的前端構建工具&#xff0c;它可以將多個模塊&#xff08;包括CSS、JavaScript、圖片等&#xff09;打包成一個或多個靜態資源文件&#xff08;bundle&#xff09;&#xff0c;以便用于部署到生產…

19c_ogg搭建

1.環境介紹 源端&#xff1a;192.168.56.101 目標端&#xff1a;192.168.56.100 背景&#xff1a;數據從主庫cdb主機定位&#xff0c;同步到從庫 2.配置ogg 2.1 開啟歸檔、強制日志、補充日志 --ogg 主備都需要配置 SQL> alter database archivelog; SQL> alter databa…

【Axure高保真原型】JS日期選擇器篩選中繼器表格

今天和大家分享JS日期選擇器篩選中繼器表格的原型模板&#xff0c;通過調用瀏覽器的日期選擇器&#xff0c;所以可以獲取真實的日歷效果&#xff0c;具體包括哪一年二月份有29天&#xff0c;幾號對應星期幾&#xff0c;都是真實的&#xff0c;獲取日期值后&#xff0c;通過交互…

接口測試,負載測試,并發測試,壓力測試區別

接口測試 1.定義&#xff1a;接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換&#xff0c;傳遞和控制管理過程&#xff0c;以及系統間的相互邏輯依賴關系等。 2.目的&#xf…

原型與繼承

原型與繼承 在 JavaScript 中&#xff0c;對象有一個特殊的隱藏屬性 [[Prototype]]&#xff08;如規范中所命名的&#xff09;&#xff0c;它要么為 null&#xff0c;要么就是對另一個對象的引用。該對象被稱為“原型。 當我們從 object 中讀取一個缺失的屬性時&#xff0c;Jav…

使用Julia實現A*路徑尋找算法:一個深入的指南

第一部分&#xff1a;簡介與背景 1. 引言 Julia&#xff0c;作為一種高效、靈活且易于學習的編程語言&#xff0c;逐漸在科學計算、數據分析和機器學習等領域中占據一席之地。當我們談到路徑規劃或游戲開發時&#xff0c;A_算法&#xff08;A Star Algorithm&#xff09;常常…

什么是變量提升(hoisting)?它在JavaScript中是如何工作的?

聚沙成塔每天進步一點點 ? 專欄簡介? 變量提升&#xff08;Hoisting&#xff09;? 變量提升的示例&#xff1a;? 寫在最后 ? 專欄簡介 前端入門之旅&#xff1a;探索Web開發的奇妙世界 記得點擊上方或者右側鏈接訂閱本專欄哦 幾何帶你啟航前端之旅 歡迎來到前端入門之旅&…

7.3 C/C++ 實現順序棧

順序棧是一種基于數組實現的棧結構&#xff0c;它的數據元素存儲在一段連續的內存空間中。在順序棧中&#xff0c;棧頂元素的下標是固定的&#xff0c;而棧底元素的下標則隨著入棧和出棧操作的進行而變化。通常&#xff0c;我們把棧底位置設置在數組空間的起始處&#xff0c;這…

C++11并發與多線程筆記(9) async、future、packaged_task、promise

C11并發與多線程筆記&#xff08;9&#xff09; async、future、packaged_task、promise 1、std::async、std::future創建后臺任務并返回值2、std::packaged_task&#xff1a;打包任務&#xff0c;把任務包裝起來3、std::promise3、小結 1、std::async、std::future創建后臺任務…

C++友元函數和友元類

友元 1.友元介紹2.類友元2.1示例代碼 3.函數友元3.1示例代碼 4.總結 1.友元介紹 在C中&#xff0c;友元&#xff08;friend&#xff09;是一種機制&#xff0c;允許某個類或函數訪問其他類的私有成員。通過友元&#xff0c;可以授予其他類或函數對該類的私有成員的訪問權限。友…

哈工大開源“活字”對話大模型

一、介紹 大規模語言模型&#xff08;LLM&#xff09;在自然語言處理的通用領域已取得了令人矚目的成功。對于廣泛的應用場景&#xff0c;這種技術展示了強大的潛力&#xff0c;學術界和工業界的興趣也持續升溫。哈工大自然語言處理研究所30余位老師和學生參與開發了通用對話大…

re學習(35)攻防世界-no-strings-attached(動調)

參考文章&#xff1a;re學習筆記&#xff08;28&#xff09;攻防世界-re-no-strings-attached_Forgo7ten的博客-CSDN博客 攻防世界逆向入門題之no-strings-attached_攻防世界 no-strings-attached_沐一 林的博客-CSDN博客 本人題解&#xff1a; 扔入Exepeinfo中查殼和其他信息…

LVS-DR模型實例

一、LVS-DR集群介紹 LVS-DR&#xff08;Linux Virtual Server Director Server&#xff09;工作模式&#xff0c;是生產環境中最常用的一 種工作模式。 1、LVS-DR 工作原理 LVS-DR 模式&#xff0c;Director Server 作為群集的訪問入口&#xff0c;不作為網關使用&#xff0…

python+django+mysql項目實踐五(信息搜索)

python項目實踐 環境說明: Pycharm 開發環境 Django 前端 MySQL 數據庫 Navicat 數據庫管理 信息搜素 輸入內容進行搜索,內容有文本類和時間類 文本類需要模糊搜索,包含即檢索 時間類需要選取時間范圍內的內容 views 利用Q完成對指定內容的檢索 檢索后按檢索內容更新…

HarmonyOS/OpenHarmony應用開發-ArkTS語言渲染控制ForEach循環渲染

ForEach基于數組類型數據執行循環渲染。說明&#xff0c;從API version 9開始&#xff0c;該接口支持在ArkTS卡片中使用。 一、接口描述 ForEach(arr: any[], itemGenerator: (item: any, index?: number) > void,keyGenerator?: (item: any, index?: number) > stri…

網絡綜合布線實訓室建設方案

一、網絡綜合布線系統概述 網絡綜合布線系統是為了滿足數據通信需求而設計和建立的一套基礎設施。它提供了數據傳輸、信號傳輸和電力供應的基礎結構&#xff0c;支持各種網絡設備和終端設備之間的連接。 網絡綜合布線系統通常包括以下組成部分&#xff1a; 1&#xff09; 數據…

面試題 17.10 主要元素

??題目來源&#xff1a; leetcode題目&#xff0c;網址&#xff1a;面試題 17.10. 主要元素 - 力扣&#xff08;LeetCode&#xff09; 解題思路&#xff1a; 首先&#xff0c;順序遍歷數組&#xff0c;將不同的數字消去&#xff0c;最后留下的數字若計數小于等于 0&#xff…

ZooKeeper集群服務器啟動

在本文中&#xff0c;我們將對集群版ZooKeeper服務器的啟動過程做詳細講解。集群和單機ZooKeeper服務器的啟動過程在很多地方都是一致的&#xff0c;因此本節只會對有差異的地方展開進行講解。下圖所示是集群版ZooKeeper服務器的啟動流程圖。 預啟動 預啟動的步驟如下。 (1)統…

Python高光譜遙感數據處理與高光譜遙感機器學習方法教程

詳情點擊鏈接&#xff1a;Python高光譜遙感數據處理與高光譜遙感機器學習方法教程 第一&#xff1a;高光譜基礎 一&#xff1a;高光譜遙感基本 01)高光譜遙感 02)光的波長 03)光譜分辨率 04)高光譜遙感的歷史和發展 二&#xff1a;高光譜傳感器與數據獲取 01)高光譜遙感…

AI搜索引擎助力科學家創新

開發者希望通過幫助科學家從大量文獻中發現聯系從而解放科學家&#xff0c;讓他們專注于發現和創新。 圖片來源&#xff1a;The Project Twins 對于專注于歷史的研究者Mushtaq Bilal來說&#xff0c;他在未來科技中投入了大量時間。 Bilal在丹麥南部大學&#xff08; Universit…