Sass 基础用法速览

Sass 基础用法速览

目录

  • Sass 基础用法速览
    • 1. 什么是 Sass?
    • 2. 安装 Sass
      • 2.1 使用 npm 安装(推荐)
      • 2.2 使用 Dart Sass(官方推荐)
      • 2.3 使用 GUI 工具
    • 3. Sass 基本用法
      • 3.1 编译 Sass
    • 4. Sass 语法详解
      • 4.1 变量
      • 4.2 嵌套
      • 4.3 父选择器引用(&)
      • 4.4 注释
      • 4.5 混合(Mixin)
      • 4.6 继承(Extend)
      • 4.7 运算
      • 4.8 条件语句(@if, @else)
      • 4.9 循环(@for, @each, @while)
    • 5. 模块化与导入
      • 5.1 分文件管理
      • 5.2 导入文件
    • 6. 实战示例
      • 6.1 目录结构
      • 6.2 代码示例
    • 7. 常见问题
    • 8. 参考资料

1. 什么是 Sass?

Sass(Syntactically Awesome Style Sheets)是一种 CSS 预处理器,它扩展了 CSS 的功能,允许你使用变量、嵌套、混合、继承等高级特性,从而让样式表更易维护和复用。

Sass 有两种语法:

  • .scss(Sassy CSS):和 CSS 语法几乎一样,推荐使用。
  • .sass:缩进式语法,不用大括号和分号。

本教程主要以 .scss 语法为例。


2. 安装 Sass

2.1 使用 npm 安装(推荐)

npm install -g sass

2.2 使用 Dart Sass(官方推荐)

下载地址:https://sass-lang.com/install

2.3 使用 GUI 工具

如 Koala 或 Prepros。


3. Sass 基本用法

3.1 编译 Sass

sass input.scss output.css

实时监听:

sass --watch input.scss:output.css

4. Sass 语法详解

4.1 变量

$primary-color: #3498db;
$padding: 16px;.button {color: $primary-color;padding: $padding;
}

4.2 嵌套

.nav {ul {margin: 0;li {display: inline-block;a {color: $primary-color;}}}
}

4.3 父选择器引用(&)

.button {color: white;&:hover {color: yellow;}
}

4.4 注释

// 单行注释,不会编译到 CSS
/* 多行注释,会编译到 CSS */

4.5 混合(Mixin)

@mixin border-radius($radius) {border-radius: $radius;
}.box {@include border-radius(10px);
}

4.6 继承(Extend)

%base-btn {padding: 10px 20px;border: none;
}.btn-primary {@extend %base-btn;background: $primary-color;
}

4.7 运算

.container {width: 100% - 20px;padding: $padding / 2;
}

4.8 条件语句(@if, @else)

$theme: dark;body {@if $theme == dark {background: #222;color: #fff;} @else {background: #fff;color: #222;}
}

4.9 循环(@for, @each, @while)

@for $i from 1 through 3 {.col-#{$i} {width: 100px * $i;}
}$colors: red, green, blue;
@each $color in $colors {.text-#{$color} {color: $color;}
}

5. 模块化与导入

5.1 分文件管理

创建 _variables.scss, _mixins.scss, _base.scss 等。

5.2 导入文件

@use 'variables';
@use 'mixins';
@use 'base';

注意:Sass 推荐使用 @use 替代旧的 @import


6. 实战示例

6.1 目录结构

/scss├── _variables.scss├── _mixins.scss├── _base.scss└── main.scss

6.2 代码示例

_variables.scss

$primary-color: #3498db;
$font-stack: 'Helvetica Neue', Arial, sans-serif;

_mixins.scss

@mixin flex-center {display: flex;justify-content: center;align-items: center;
}

_base.scss

body {font-family: $font-stack;color: $primary-color;
}

main.scss

@use 'variables';
@use 'mixins';
@use 'base';.header {@include mixins.flex-center;height: 60px;background: variables.$primary-color;
}

7. 常见问题

  • Sass 和 Less 有什么区别?
    • Sass 功能更强大,社区更活跃,推荐使用。
  • 如何在 Vue/React 项目中使用 Sass?
    • 安装 sass 依赖,直接在 .vue.jsx 文件中引入 .scss 文件即可。
  • @import 和 @use 有什么区别?
    • @use 更现代,支持命名空间,避免变量冲突。

8. 参考资料

  • Sass 官方文档
  • Sass 中文网

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

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

相关文章

洛谷B3840 [GESP202306 二级] 找素数

题目描述 小明刚刚学习了素数的概念:如果一个大于 1 的正整数,除了 1 和它自身外,不能被其他正整数整除,则这个正整数是素数。现在,小明想找到两个正整数 A 和 B 之间(包括 A 和 B)有多少个素数…

idea部署本地仓库和连接放送远程仓库

1.下载git,安装好后任意地方又键会出现两个带git的东西 2.点击bash here的那个,召唤出git的小黑窗,输入 git config --global user.name "你自己取名" git config --global user.email "你自己输入你的邮箱" 3.打开id…

C++(20): 文件输入输出库 —— <fstream>

目录 一、 的核心功能 二、核心类及功能 三、核心操作示例 1. 文本文件写入(ofstream) 2. 文本文件读取(ifstream) 3. 二进制文件操作(fstream) 四、文件打开模式 五、文件指针操作 六、错误处理技巧…

elementUI 循环出来的表单,怎么做表单校验?

数据结构如下&#xff1a; diversionParamList: [ { length: null, positionNumber: null, value: null, } ] 思路&#xff1a;可根据 index 动态绑定 :props 属性值&#xff0c;校验规则写在:rules <div class"config-item" v-for"(item, index) in form.…

x-cmd install | Pillager:Go 语言打造的敏感信息文件系统扫描利器

目录 Pillager 的独特优势安装Pillager 的应用场景Pillager 的核心功能 还在为文件系统中潜在的敏感信息泄露而担忧吗&#xff1f;Pillager 是一款由 Go 语言编写的强大工具&#xff0c;旨在帮助你轻松扫描文件系统&#xff0c;发现隐藏的密钥、密码、API 令牌等敏感信息。 Pil…

大模型(2)——提示工程(Prompt Engineering)

文章目录 一、提示工程的核心概念为什么需要提示工程&#xff1f; 二、提示设计的基本原则三、实用提示工程技巧1. 角色设定法2. 示例引导法&#xff08;Few-Shot Learning&#xff09;3. 分阶段提问4. 负面约束5. 温度&#xff08;Temperature&#xff09;控制 四、不同任务类…

环境搭建

一个简单的请求在加入spring security之前的样子, 在浏览器中输入地址就可以直接访问 <!--引入spring security依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>&…

院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵

一、1134矩阵翻转 1.题目描述 2.解题思路 很简单的模拟题&#xff0c;甚至只是上下翻转&#xff0c;遍历输出的时候先把最下面那一行输出即可。 3.代码 #include <iostream> #include <vector> using namespace std;int main() {int n;cin >> n;vector&l…

软件架构风格系列(5):数据共享架构

数据共享架构&#xff1a;如何让数据在系统间自由“流淌”&#xff1f; 引言 在企业数字化转型的浪潮中&#xff0c;“数据孤岛”成为横在业务创新面前的大山&#xff1a;营销系统的用户画像无法同步到客服系统&#xff0c;供应链的库存数据难以为销售决策提供支撑…… 此时&…

SAP-13-内表与工作区

内表 作用&#xff1a; 内表是 ABAP 程序中一种非常重要的数据结构&#xff0c;它类似于数据库表&#xff0c;用于在程序运行时存储和处理数据。与数据库表不同的是&#xff0c;内表存在于程序的内存中&#xff0c;数据的读写速度比从数据库中读取要快很多。它可以存储多条具有…

dali本地安装和使用

Dali&#xff08;Distance-matrix ALIgnment&#xff09;是一种广泛使用的蛋白质结构比对工具&#xff0c;主要用于比较蛋白质三维结构之间的相似性。它通过计算蛋白质结构之间的距离矩阵来评估结构之间的相似性&#xff0c;并生成比对结果。 1. 安装 wget http://ekhidna2.b…

Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览

文章目录 前言SceneCaptureComponent2D实现步骤新建渲染目标新建材质UI控件激活3DPreview鼠标拖动旋转模型最后前言 我们在(电商展示/角色预览/装备查看)等应用场景中,经常会看到这种3D展示的页面。 即使用相机捕获一个3D的模型的视图,然后把这个视图显示在一个UI画布上,…

2024CCPC辽宁省赛 个人补题 ABCEGJL

Dashboard - 2024 CCPC Liaoning Provincial Contest - Codeforces 过题难度 B A J C L E G 铜奖 4 953 银奖 6 991 金奖 8 1664 B&#xff1a; 模拟题 // Code Start Here string s;cin >> s;reverse(all(s));cout << s << endl;A&#xff1a;很…

Java基础 Day17

一、递归 方法直接或者间接调用本身 将大问题, 层层转化为一个与原问题相似的、规模更小的问题来解决 二、异常 程序在编译或执行过程中&#xff0c;出现的非正常的情况 (错误) 语法错误不是异常 1、阅读异常信息 从下往上看&#xff1a;发生异常的位置、异常名称、发生异…

hook原理和篡改猴编写hook脚本

hook原理&#xff1a; hook是常用于js反编译的技术&#xff1b;翻译就是钩子&#xff0c;他的原理就是劫持js的函数然后进行篡改 一段简单的js代码 &#xff1a;这个代码是顺序执行的 function test01(){console.log(test01)test02() } function test02(){console.log(02)tes…

使用 Vue 展示 Markdown 文本

使用 Vue 展示 Markdown 文本可以通过以下几种方法&#xff1a; 方法 1&#xff1a;使用 v-html 指令 可以使用 v-html 指令来渲染 Markdown 文本&#xff1a; <template><div v-html"markdownText"></div> </template> <script>e…

深度解析 Java 中介者模式:重构复杂交互场景的优雅方案

一、中介者模式的核心思想与设计哲学 在软件开发的历史长河中&#xff0c;对象间的交互管理一直是架构设计的核心难题。当多个对象形成复杂的网状交互时&#xff0c;系统会陷入 "牵一发而动全身" 的困境。中介者模式&#xff08;Mediator Pattern&#xff09;作为行…

FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现

起因&#xff1a;因为要设计一个波珠螺丝固定器&#xff0c;为了不跑偏&#xff0c;需要在螺柱上加工一个直径6mm&#xff0c;深度1.2mm的圆弧凹槽所以想用泉州制造的6.8车铣加工。 但是该加工目前不支持轴向的钻孔&#xff0c;所以想着干脆在两端加上M8的螺栓&#xff0c;也起…

权限控制相关实现

Spring Boot-Shiro-Vue&#xff1a; 这个项目可以满足基本的权限控制需求&#xff0c;前后端都有&#xff0c;开箱即用

Node.js路径处理指南:如何安全获取当前脚本目录路径

本文适用于 Node.js 14.x及以上版本&#xff0c;同时覆盖 CommonJS 和 ES Modules 模块系统 文章目录 一、为什么需要关注路径问题&#xff1f;二、三种核心方法详解方法1&#xff1a;经典方案 __dirname (CommonJS)方法2&#xff1a;ES Modules 解决方案方法3&#xff1a;动态…