sass介紹

1、Sass簡介

Sass 是一種 CSS 的預編譯語言。它提供了 變量(variables)、嵌套(nested rules)、 混合(mixins)、 函數(functions)等功能,并且完全兼容 CSS 語法。Sass 能夠幫助復雜的樣式表更有條理, 并且易于在項目內部或跨項目共享設計。

瀏覽器并不支持 Sass 代碼。因此,你需要使用一個 Sass 預處理器將 Sass 代碼轉換為 CSS 代碼。

在使用 Sass 之前,你需要在項目中安裝它;

1.1、npm安裝步驟:

確保已經安裝了Node.js和npm;

//全局安裝
npm install -g sass
//查看安裝版本
sass --version
//簡寫
sass -v

使用前需要先創建一個SCSS文件,例如common.scss;
sass文件一般保存在.scss的文件中,css則是保存在.css文件中;

其他安裝介紹

2、變量

變量通常用來存儲一些會重復利用的樣式;例如顏色、字體;
格式:$符號作為變量的標志;
命名:變量名是不以數字開頭的可包含字母、數字、下劃線、橫線(連接符),可使用駝峰命名法、下劃線鏈接命名法;
寫法:同css,變量名與值之間用冒號分割;
Sass map :Sass map 是一種數據結構,允許你存儲一系列的鍵值對,類似于 JavaScript 中的對象

sass變量可以存儲的信息包含:字符串、數字、顏色值、布爾值、列表、null值;

//變量創建
$mainColor:#00b362;//顏色變量
$blackColor:#000;
$fontSize:16px; //數字變量
$fontFamily:"Helvetica Neue", Helvetica, Arial, sans-serif;//字符串變量
$color-map: (color1: #fa0000, color2: #fbe200, color3: #95d7eb);//Sass map
//變量使用
body{font:14px $fontStack;color: $blackColor;
}
//你可以使用 map-get 函數來獲取特定鍵的值
.ceshi-main{p{font-size: 28rpx;}p:nth-child(1){color: map-get($colorMap, color1);}p:nth-child(2){color: map-get($colorMap, color2);}p:nth-child(3){color: map-get($colorMap, color3);}
}

3、嵌套

Sass 允許您嵌套 CSS 選擇器,嵌套方式 與 HTML 的視覺層次結構相同。請注意,過度嵌套的規則 將導致過度限定的 CSS,這些 CSS 可能很難維護,并且 通常被認為是不好的做法。

使用大括號和縮進來表示層級關系,可以多層嵌套

//.scss嵌套寫法
nav {ul {margin: 0;padding: 0;list-style: none;}li { display: inline-block; }a {display: block;padding: 6px 12px;text-decoration: none;}& > p {color: #f00;}& + p {color: #0ff;}&:nth-child(2) a{color: #ff0;}
}
//.css相同層次結構寫法
nav ul {margin: 0;padding: 0;list-style: none;
}
nav li {display: inline-block;
}
nav a {display: block;padding: 6px 12px;text-decoration: none;
}
nav > p{color: #f00;
}
nav + p{color: #0ff;
}
nav:nth-child(2) a{color: #ff0;
}

備注:
nav > p 寫法為后代選擇器,只匹配直接后代;
nav + p 寫法為兄弟組合器,只有與nav相鄰的P標簽會匹配此語法;
nav:nth-child(2) 寫法為偽類選擇器;

<nav><p></p>
</nav>

在這里插入圖片描述

4、混合@mixin與@include

混合器類似于函數,可以包含可重用的樣式和變量,簡化復雜樣式定義。

@mixin 指令允許我們定義一個可以在整個樣式表中重復使用的樣式。
@include 指令可以將混入(mixin)引入到文檔中。

//定義無參數的混合器
@mixin name{background: #fff;box-shadow: 0 0 1px rgba(0,0,0,.25);color: #222;
}.main{@include name;//使用默認值
}
//定義有參數混合器,name混合器名稱,$theme混合器傳參,#f00參數默認值
@mixin name($theme:#f00){background: $theme;box-shadow: 0 0 1px rgba($theme, .25);color: #fff;
}//使用混合器,使用@include關鍵字
.info{@include name;//使用默認值
}
.success {@include name($theme:#73df8a);//傳參
}
//設置可變參數
@mixin box-shadow($shadows...){-moz-box-shadow: $shadows;-webkit-box-shadow: $shadows;box-shadow: $shadows;
}//引用
.shadows {@include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}
//瀏覽器前綴使用混入
@mixin transform($property) {-webkit-transform: $property;-ms-transform: $property;transform: $property;
}//使用
.myBox {@include transform(rotate(20deg));
}//轉換為css代碼
.myBox {-webkit-transform: rotate(20deg);-ms-transform: rotate(20deg);transform: rotate(20deg);
}

注意:Sass 的連接符號 - 與下劃線符號 _ 是相同的,也就是 @mixin color-set { } 與 @mixin color_set { } 是一樣的混入。

//具體實例設置,定義混合器
@mixin colorSet($bgColor:#fff4e4,$boxColor:#000d8b){background: $bgColor;box-shadow: 0 0 10px rgba($boxColor,0.5);-moz-box-shadow: 0 0 10px rgba($boxColor,0.5);-webkit-box-shadow: 0 0 10px rgba($boxColor,0.5);color: #000;
}
//使用混合器
.ceshi-main{.info{width: 60px;height: 60px;@include colorSet;//使用默認值}.info2{width: 60px;height: 60px;@include colorSet(#edfff1,#00470f);//使用默認值//@include colorSet($bgColor:#edfff1,$boxColor:#00470f);}
}
//渲染結果
.ceshi-main .info{width: 60px;height: 60px;background: #fff4e4;box-shadow: 0 0 10px rgba(0, 13, 139, 0.5);-moz-box-shadow: 0 0 10px rgba(0, 13, 139, 0.5);-webkit-box-shadow: 0 0 10px rgba(0, 13, 139, 0.5);color: #000;
}
.ceshi-main .info2{width: 60px;height: 60px;background: #edfff1;box-shadow: 0 0 10px rgba(0, 71, 15, 0.5);-moz-box-shadow: 0 0 10px rgba(0, 71, 15, 0.5);-webkit-box-shadow: 0 0 10px rgba(0, 71, 15, 0.5);color: #000;
}

混合器也支持嵌套

//定義混合器
@mixin mainText($size:14px,$color:#222,$lightColor:#999){color: $color;font-size: $size;p{color: $color;font-size: $size;}span{font-size: 24rpx;color: $lightColor;}
}
//使用混合器
.info{@include mainText;
}
.success{@include mainText(18rpx, #3bc157, #c6e7cd);
}
.error{@include mainText(18rpx, #e73535, #eab7b7);
}

5、sass函數

sass定義了各種類型的函數,字符串相關、數字相關、列表相關、映射相關、選擇器相關、顏色相關等等;
菜鳥教程參考文檔

數字函數

函數描述&實例
abs(number)返回一個數值的絕對值
ceil(number)向上取整
comparable(num1,num2)返回一個布爾值,判斷num1和num2是否可以進行判斷
floor(number)向下取整
max(number…)返回最大值
min(number…)返回最小值
round(number…)返回最接近該數的一個整數,四舍五入
abs(15)//結果15
abs(-15)//結果15ceil(15.20)  //結果: 16comparable(15px, 10px)//結果: true
comparable(20mm, 1cm) //結果: true
comparable(35px, 2em) //結果: falsefloor(15.80) //結果: 15max(5, 7, 9, 0, -3, -7) //結果: 9min(5, 7, 9, 0, -3, -7) //結果: -7round(15.20) //結果: 15
round(15.80) //結果: 16

Sass Map(映射)函數

函數描述&實例
map-get(map, key)返回 Map 中 key 所對應的 value(值)。如沒有對應的 key,則返回 null 值。
map-has-key(map, key)判斷 map 是否有對應的 key,存在返回 true,否則返回 false。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-get($font-sizes, "small") //結果: 12pxmap-has-key($font-sizes, "big") //結果: false

6、sass的@import

sass與css類似,支持@import指令;@import 指令可以讓我們導入其他文件等內容;

CSS @import 指令在每次調用時,都會創建一個額外的 HTTP 請求。但,Sass @import 指令將文件包含在 CSS 中,不需要額外的 HTTP 請求。

注意:包含文件時不需要指定文件后綴,Sass 會自動添加后綴 .scss。

//創建index.scss文件
//導入 common.scss文件。
@import "common";
//common.scss文件
html,body,ul,li,ol,p,img,h1,span{margin:0;padding:0;
}

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

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

相關文章

[JavaScript]如何利用作用域塊避免閉包內存泄漏?

出自《你不知道的JavaScript》上卷 以下是本書給出的反例: function process (data) {...} var bigdata{...} process(bigdata); var btn document.getElementById(x); btn.addEventListener(click, function click{...});click會被回調在其他位置, 在addEventListener函數內…

leetcode hot100(五)

11. 盛最多水的容器 給定一個長度為 n 的整數數組 height 。有 n 條垂線&#xff0c;第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 說明&#xff1a;你…

Unity 云渲染本地部署方案

Unity Render Streaming 云渲染環境搭建 0.安裝 Unity Render Streaming 實現原理: 服務器與客戶端實現功能包括: 詳細內容見官方文檔&#xff1a; 官方文檔: https://docs.unity3d.com/Packages/com.unity.renderstreaming3.1/manual/tutorial.html Unity 流送云渲染介紹: …

洛谷 P3986 斐波那契數列

P3986 斐波那契數列 題目描述 定義一個數列&#xff1a; f ( 0 ) a , f ( 1 ) b , f ( n ) f ( n ? 1 ) f ( n ? 2 ) f(0) a, f(1) b, f(n) f(n - 1) f(n - 2) f(0)a,f(1)b,f(n)f(n?1)f(n?2) 其中 a, b 均為正整數&#xff0c;n ≥ 2。 問有多少種 (a, b)&…

【java面型對象進階】------繼承實例

繼承結構下的標準Javabean 代碼如下&#xff1a; package demo10;//定義員工父類 public class Employee {private String id;private String name;private double salary;//構造方法public Employee(){}public Employee(String id,String name,double salary){this.idid;thi…

Vitis 2024.1 無法正常編譯custom ip的bug(因為Makefile里的wildcard)

現象&#xff1a;如果在vivado中&#xff0c;添加了自己的custom IP&#xff0c;比如AXI4 IP&#xff0c;那么在Vitis&#xff08;2024.1&#xff09;編譯導出的原本的.xsa的時候&#xff0c;會構建build失敗。報錯代碼是&#xff1a; "Compiling blank_test_ip..."…

【圖論】并查集的學習和使用

目錄 并查集是什么&#xff1f; 舉個例子 組成 父親數組&#xff1a; find函數&#xff1a; union函數&#xff1a; 代碼實現&#xff1a; fa[] 初始化code: find code&#xff1a; 遞歸實現: 非遞歸實現: union code : 畫圖模擬&#xff1a; 路徑壓縮&#xff1a…

Java使用FFmpegFrameGrabber進行視頻拆幀,結合Thumbnails壓縮圖片保存到文件夾

引入依賴 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…

mysql與redis的日志策略

MySQL 和 Redis 在日志記錄方面采用了不同的策略&#xff0c;分別對應寫前日志&#xff08;Write-Ahead Logging, WAL&#xff09;和寫后日志&#xff08;Write-After Logging&#xff09;。以下是它們的詳細說明&#xff1a; 1. MySQL&#xff1a;寫前日志&#xff08;Write-A…

nacos安裝,服務注冊,服務發現,遠程調用3個方法

安裝 點版本下載頁面 服務注冊 每個微服務都配置nacos的地址&#xff0c;都要知道 服務發現 2個是知道了解 遠程調用基本實現 遠程調用方法2&#xff0c;負載均衡API測試 遠程調用方法3&#xff0c;注解 負載均衡的遠程調用&#xff0c; 總結 面試題

Ubuntu Qt: no service found for - “org.qt-project.qt.mediaplayer“

1、前言 在一次項目過程中&#xff0c;因項目需求&#xff0c;需要將windows開發的Qt項目遷移到ubuntu系統中&#xff0c;且在某個功能項中需要播放音頻&#xff0c;在windows系統中能夠正常運行&#xff0c;但在ubuntu系統中卻顯示defaultServiceProvider::requestService(): …

Blender制作次表面材質

效果: 主要用沃羅諾伊紋理做出云絮感 然后EV開啟次表面設置

用 pytorch 從零開始創建大語言模型(四):從零開始實現一個用于生成文本的GPT模型

從零開始創建大語言模型&#xff08;Python/pytorch &#xff09;&#xff08;四&#xff09;&#xff1a;從零開始實現一個用于生成文本的GPT模型 4 從零開始實現一個用于生成文本的GPT模型4.1 編寫 L L M LLM LLM架構4.2 使用層歸一化對激活值進行標準化4.3 使用GELU激活函數…

vmware tools灰化

Windows7 32位的某些版本&#xff0c;已經不被vmware支持。下面是解決方法&#xff1a; 安裝kb4474419補丁包&#xff1a;https://www.catalog.update.microsoft.com/Search.aspx?qKB4474419網絡共享。必須要虛擬機和主機可通信。此方法不錯&#xff0c;但是操作起來太麻煩。…

ubuntu高并發內核參數調優 - (壓測客戶端調優)

業務上要求集群提供10w并發&#xff0c;10w并發聽上去不是很難&#xff0c;但10w并發持續1小時呢 在業務上線之前還需要我們自己對業務進行壓測&#xff0c;俗稱benchmark。 壓測的服務器也是需要進行性能調優的&#xff0c;以下列出調優前后的參數對比&#xff0c;更直觀的分析…

html5制作2048游戲開發心得與技術分享

2048游戲開發心得與技術分享 這里寫目錄標題 2048游戲開發心得與技術分享項目概述技術架構1. 核心技術棧2. 項目結構 核心功能實現1. 數據結構設計2. 移動邏輯實現3. 觸摸支持 性能優化1. DOM操作優化2. 事件處理優化 開發心得1. 代碼組織2. 調試技巧3. 用戶體驗優化 項目亮點技…

dify+deepseek聯網搜索:免費開源搜索引擎Searxng使用(讓你的大模型也擁有聯網的功能)

docker安裝SearXng 項目地址:https://github.com/searxng/searxng-docker 第一步 git clone下來 git clone https://github.com/searxng/searxng-docker.git第二步 進入 searxng-docker目錄中修改docker-compose.yaml(直接復制粘貼) cd searxng-dockerdocker-compose.yaml …

docker的anythingllm和open-webui壓縮包分享(國內鏡像拉取,百度云壓縮包分享)

文章目錄 前言第一部分&#xff1a;鏡像獲取&#x1f680; 方式一&#xff1a;切換國內下載鏡像?1. 下載anythingllm? 2. 下載open-webui &#x1f680;方式二&#xff1a;下載我分享的百度云? anythingllm壓縮包百度云鏈接? open-webui壓縮包 第二部分&#xff1a;下載之后…

DeepSeek-R1深度解讀

deepseek提出了一種通過強化學習&#xff08;RL&#xff09;激勵大語言模型&#xff08;LLMs&#xff09;推理能力的方法&#xff0c;個人認為最讓人興奮的點是&#xff1a;通過RL發現了一個叫“Aha Moment”的現象&#xff0c;這個時刻發生在模型的中間版本中。在這個階段&…

從零實現B站視頻下載器:Python自動化實戰教程

一、項目背景與實現原理 1.1 B站視頻分發機制 Bilibili的視頻采用 音視頻分離技術,通過以下方式提升用戶體驗: 動態碼率適配(1080P/4K/HDR) 分段加載技術(基于M4S格式) 內容保護機制(防盜鏈/簽名驗證) 1.2 技術實現路線 graph TDA[模擬瀏覽器請求] --> B[獲取加密…