Sass 入门

news/2025/11/19 17:30:26/文章来源:https://www.cnblogs.com/emanlee/p/19240896

内容来自:https://www.cnblogs.com/yxysuanfa/p/19154327

 

关于 Sass(Syntactically Awesome Style Sheets) 的详细介绍,包括其基本用法、核心特性、语法差异(.scss vs .sass),以及多个经典实用示例。

一、什么是 Sass?

Sass 是一种 CSS 预处理器(CSS Preprocessor),它扩展了 CSS 的功能,允许你使用变量、嵌套、混合(mixin)、函数、条件、循环等“编程式”语法来编写样式,最终编译为标准的 CSS 文件供浏览器使用。

✅ 主要优势:

  • 减少重复代码
  • 提高可维护性
  • 支持模块化开发
  • 更强的逻辑控制能力(条件、循环)
  • 更好的团队协作与主题定制

 

二、Sass 两种语法格式

Sass 支持两种语法,功能相同,只是写法不同:

格式文件扩展名特点
SCSS(Sassy CSS) .scss 类似 CSS 语法,使用 {};,推荐使用
Sass(缩进语法) .sass 缩进代替括号,无分号,类似 Python

推荐使用 .scss,因为它与 CSS 完全兼容,学习成本低。


 

三、Sass 核心特性与用法

1. 变量(Variables)

使用 $ 定义变量,用于存储颜色、字体、尺寸等,便于统一管理。

// 定义变量
$primary-color: #007bff;
$font-stack: 'Helvetica Neue', sans-serif;
$border-radius: 4px;
// 使用变量
.button {background-color: $primary-color;font-family: $font-stack;border-radius: $border-radius;
}

编译后:

.button {
background-color: #007bff;
font-family: 'Helvetica Neue', sans-serif;
border-radius: 4px;
}

2. 嵌套(Nesting)

允许在父选择器中嵌套子元素,结构更清晰。

.navbar {background: #333;padding: 1rem;.nav-link {color: white;text-decoration: none;&:hover {color: $primary-color;}}.logo {font-weight: bold;}
}

编译后:

.navbar {
background: #333;
padding: 1rem;
}
.navbar .nav-link {
color: white;
text-decoration: none;
}
.navbar .nav-link:hover {
color: #007bff;
}
.navbar .logo {
font-weight: bold;
}

& 表示父选择器,常用于 :hover, :focus, 伪类等。


3. 混合(Mixins)

类似“函数”,可定义可复用的样式块,支持参数和默认值。

// 定义一个带阴影的 mixin
@mixin box-shadow($x: 0, $y: 2px, $blur: 4px, $color: rgba(0,0,0,0.1)) {box-shadow: $x $y $blur $color;
}
// 使用 mixin
.card {@include box-shadow(0, 4px, 8px, rgba(0,0,0,0.15));
}
.button {@include box-shadow();
}

编译后:

.card {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}
.button {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

4. 继承(Extend)

让一个选择器继承另一个的样式,减少重复。

%message-shared {border: 1px solid #ccc;padding: 10px;color: #333;
}
.success {@extend %message-shared;border-color: green;
}
.error {@extend %message-shared;border-color: red;
}

编译后:

.success, .error {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success {
border-color: green;
}
.error {
border-color: red;
}

%placeholder 是占位符选择器,不会输出到 CSS,仅用于继承。


5. 函数(Functions)

Sass 内置大量函数(如 lighten(), darken(), rgba()),也可自定义函数。

$base-color: #007bff;
.button-primary {background-color: $base-color;border-color: darken($base-color, 10%);color: lighten($base-color, 40%);
}

编译后:

.button-primary {
background-color: #007bff;
border-color: #005ecc;
color: #b3d9ff;
}

6. 条件与循环(@if / @for / @each / @while)

Sass 支持编程逻辑,适合生成复杂样式。

示例:使用 @each 生成按钮主题
$themes: (primary: #007bff,success: #28a745,danger:  #dc3545,warning: #ffc107
);
@each $name, $color in $themes {.btn-#{$name} {background-color: $color;border-color: darken($color, 10%);&:hover {background-color: darken($color, 10%);}}
}

编译后(部分):

.btn-primary {
background-color: #007bff;
border-color: #005ecc;
}
.btn-primary:hover {
background-color: #005ecc;
}
/* ... 其他主题 */
示例:使用 @for 生成栅格类
@for $i from 1 through 12 {.col-#{$i} {width: (100% / 12) * $i;}
}

编译后:

.col-1 { width: 8.333%; }
.col-2 { width: 16.667%; }
/* ... */
.col-12 { width: 100%; }

四、模块化与文件组织(@use / @import)

推荐使用 @use(Sass 1.23+ 推荐)

// _variables.scss
$primary: #007bff;
$spacing: 1rem;
// _mixins.scss
@mixin center {display: flex;justify-content: center;align-items: center;
}
// main.scss
@use 'variables' as vars;
@use 'mixins';
.card {margin: vars.$spacing;@include mixins.center;
}

_ 开头的文件是“部分文件”(partial),不会单独编译。


⚙️ 五、如何使用 Sass?

1. 安装 Sass

npm install -g sass

2. 编译 SCSS 到 CSS

sass input.scss output.css

3. 开启监听模式(开发时)

sass --watch input.scss output.css

4. 在项目中使用(如 Webpack/Vite)

  • 使用 sass-loader(Webpack)
  • 或直接在 Vue/React 项目中引入 .scss 文件

六、经典实用示例

✅ 示例 1:响应式断点混合(Responsive Mixins)

// _mixins.scss
@mixin mobile {@media (max-width: 768px) { @content; }
}
@mixin tablet {@media (min-width: 769px) and (max-width: 1024px) { @content; }
}
@mixin desktop {@media (min-width: 1025px) { @content; }
}
// 使用
.container {padding: 2rem;@include mobile {padding: 1rem;}@include desktop {max-width: 1200px;margin: 0 auto;}
}

✅ 示例 2:创建主题切换(CSS 变量 + Sass)

:root {--primary-color: #{$primary};--text-color: #333;
}
[data-theme="dark"] {--primary-color: #{darken($primary, 20%)};--text-color: #eee;
}
.theme-toggle {background: var(--primary-color);color: white;
}

✅ 示例 3:生成图标类(@each)

$icons: (home: "\e900",user: "\e901",settings: "\e902"
);
@each $name, $code in $icons {.icon-#{$name}:before {content: $code;font-family: 'IconFont';}
}

✅ 总结:Sass 的核心价值

特性用途
$变量 统一管理颜色、字体、间距
@mixin 封装可复用样式(阴影、动画)
@include 调用 mixin
@extend 继承样式,减少冗余
嵌套 提高结构可读性
@each/@for 批量生成类(栅格、主题)
@use 模块化组织样式文件

推荐学习资源

  • 官网:https://sass-lang.com
  • Sass 中文网:https://www.sass.hk
  • 工具:Sass Playground(在线编译测试)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

F28379D launchpad学习记录——实时音频采集:INMP441数字MEMS麦克风为例

INMP441 直接输出 I2S 或 PDM 数字音频信号。它内部已经集成了ADC和数字处理电路。 无需模拟ADC配置:你不需要使用F28379D的模拟ADC引脚来采集它,也完全不需要关心 ADCCLK、ACQPS、信号源阻抗这些问题了。 通信接口:…

2025年平面精铣机制造厂权威推荐榜单:数控四头铣床/卧式粗框机/龙门磨床源头厂家精选

在制造业升级与精密加工需求增长的推动下,平面精铣机市场呈现出高速发展态势,2024年全球精密机床市场规模同比增长超12%,高精度平面精铣设备成为工业母机领域的关键增长点。 本文基于企业技术实力、市场覆盖率、用户…

Linux中:怎么判断 Redis 主从架构是否正常

Linux中:"怎么判断 Redis 主从架构是否正常"通过 state、lage、和主备节点的数据偏移量可以判断redis的主从复制是否健康通过 INFO REPLICATION 指令查看主从复制信息,一般仅需在Master节点上查看这些信息…

为PDP-11/44安装84MB硬盘的复古计算实践

本文详细记录了在PDP-11/44计算机上安装84MB Memorex 214硬盘的过程,包括硬件规格、电源需求、机械调整和控制器配置等技术细节,展现了复古计算机硬件修复的挑战与解决方案。安装84MB硬盘到PDP-11/44 在YouTube频道[…

day13_mvc 前后端分离 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

noexcept修饰的函数无法被catch到(只会崩溃)

由于createTest函数是被noexcept修饰的,但是createTest又抛出了异常,这是catch不到的class Test {vector<int> vec; public :Test(int siz) : vec(siz) {printf("siz: %d\n", siz); fflush(stdout);…

C语言的strlen的模拟实现

strlen是一个库函数,作用是计算字符串的长度 头文件为<string.h> 今天我们来用三种方式实现一下 循环 #include<stdio.h> #include<assert.h> size_t my_strlen(const char* arr) {size_t count = …

CF1221F Choose a Square

首先将点转化到上面去。 此时变成要你求一条横线和一条竖线,使得它们右下方区域里的点权值和尽可能大。 考虑扫竖线,对于每个横线维护一个线段树,向右扫的时候每删除一些结点就在线段树里后缀减即可。

2025年pp阻燃管制造企业权威推荐榜单:pp灌溉管/pp管件批发/pp聚丙烯管源头厂家精选

在化工、冶金及环保工程领域,PP阻燃管凭借其优异的耐腐蚀性、阻燃安全性及使用寿命,已成为输送腐蚀性介质、处理工业废水及粉尘回收系统的关键材料,其材料配方与制造工艺直接关系到整个工业设施的安全与稳定运行。 …

python学习笔记-PyInstaller打包成软件包

python学习笔记-PyInstaller打包成软件包Posted on 2025-11-19 17:14 夜owl 阅读(0) 评论(0) 收藏 举报1. PyInstaller 介绍 1.1. 什么是 PyInstaller? PyInstaller 是一个用于将 Python 程序打包成独立可执行文…

2025年欧标托盘定做厂家权威推荐榜单:工业木托盘/木卡板托盘/物流木托盘源头厂家精选

在全球化贸易与供应链效率持续提升的背景下,欧标托盘作为符合国际标准(EPAL)的物流载具,其规格统一性、结构稳定性与资质合规性已成为跨境物流与企业出口的关键保障。行业数据显示,2025年全球欧标托盘市场销售额预…

Python pip使用简介和国内镜像下载

Python pip使用简介和国内镜像下载 什么是pip pip 是 Python 的官方包管理工具,用于安装和管理第三方库(也称为“包”或“模块”)。自 Python 3.4 起,pip 默认随 Python解释器安装,通过命令行使用 pip 命令进行包…

2025 电加热器厂家最新推荐排行榜:实力制造商深度解析,覆盖多场景加热设备优质解决方案远红外/管道/远红外防爆/空气/高温高压反应釜电加热器厂家推荐

引言 工业加热器作为生产流程中的核心关键设备,其性能优劣直接关系到工艺稳定性、产品质量把控与企业综合成本控制,广泛应用于机械制造、化工生产、新能源、船舶航空等多个核心领域。当前市场上加热器品牌良莠不齐,…

2025 年 11 月工业 VOC 检测仪厂家推荐排行榜,VOC 气体检测仪,便携式 VOC 检测仪,固定式 VOC 检测仪,在线 VOC 检测仪公司推荐

2025年11月工业VOC检测仪厂家推荐排行榜 随着环保法规日益严格和工业安全需求不断提升,挥发性有机物(VOC)检测仪市场迎来快速增长。作为环境监测和工业安全的关键设备,VOC检测仪的技术创新和应用拓展成为行业关注焦…

2025 年 11 月氢气分析仪厂家推荐排行榜,在线氢气分析仪,便携式氢气分析仪,微量氢气分析仪,防爆氢气分析仪公司推荐

2025 年 11 月氢气分析仪厂家推荐排行榜 随着氢能产业的快速发展,氢气分析仪作为保障安全生产和工艺控制的关键设备,其市场需求持续增长。在石油化工、新能源、半导体制造等领域,精确的氢气浓度监测对工艺优化、安全…

2025-11-19 ZYZ28-NOIP-XiaoMao Round 33550336 hetao1733837的record

2025-11-19 ZYZ28-NOIP-XiaoMao Round 33550336 hetao1733837的record2025-11-19 ZYZ28-NOIP-XiaoMao Round 33550336 hetao1733837的record 比赛链接: A.C.Competitive Fishing 原题链接1:CF2042C Competitive Fish…

linux find -exec

find 是 Linux 中一个非常强大的命令行工具,用于在文件系统中搜索文件和目录。-exec 是 find 命令的一个选项,用于指定当找到匹配的文件时,执行的命令。一、find 命令的基本结构 find [路径] [选项] [命令] 其中 -e…

VMware 17 安装 CentOS 7 详细步骤

一、VMware 下载和安装 百度网盘:https://pan.baidu.com/s/1F8-EmFk8oaf2q647zAP35w 提取码: LN66以下为网上搜集到的许可证:MC60H-DWHD5-H80U9-6V85M-8280D(亲测有效)JUO9O-6039P-08409-8J0QH-2YR7F4A4RR-813DK-M…

02.入门篇-开发工具

02.入门篇-开发工具2 开发工具 2.1 开发工具简介开发Java程序必须先安装好 JDK(Java Development Kit),也就是 Java开发工具包,其中包含了常见的开发工具以及 JRE(Java Runtime Environment,其中包含了Java核心库…

2025年【口碑好的/比较好的/靠谱的】配变电站房智能辅控主设备公司推荐排行榜 哪家好/强/靠谱 -------南京品尼科自动化有限公司

2025年【口碑好的/比较好的/靠谱的】配变电站房智能辅控主设备公司推荐排行榜 哪家好/强/靠谱 -------南京品尼科自动化有限公司 在电力行业智能化转型的浪潮中,配变电站房智能辅控主设备作为保障电力设施安全、稳定、…