sass基础语法

Sass(Syntactically Awesome Style Sheets)是一种 CSS 预处理器,提供了比原生 CSS 更强大、更灵活的语法功能。它有两种语法格式:

  • Sass(缩进语法,.sass 文件)
  • SCSS(CSS-like 语法,.scss 文件),推荐使用 SCSS,因其更接近标准 CSS。

一、Sass/SCSS 基础语法

1. 变量(Variables)

$primary-color: #3498db;body {background-color: $primary-color;
}

2. 嵌套(Nesting)

nav {ul {list-style: none;}li {display: inline-block;}a {text-decoration: none;color: $primary-color;}
}

编译为 CSS:

nav ul {list-style: none;
}
nav li {display: inline-block;
}
nav a {text-decoration: none;color: #3498db;
}

3. 父选择器 &

a {color: blue;&:hover {color: red;}
}

编译为 CSS:

a {color: blue;
}
a:hover {color: red;
}

4. 混合宏(Mixins)

用于定义可复用的样式块:

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

5. 函数(Functions)

可以自定义函数并返回值:

@function calculate-rem($size) {$rem-size: $size / 16px;@return #{$rem-size}rem;
}body {font-size: calculate-rem(14px);
}

6. 导入(Import)

将多个 Sass 文件合并为一个 CSS 文件:

// _variables.scss
$primary-color: #3498db;// main.scss
@import 'variables';body {background-color: $primary-color;
}

⚠️ 注意:Sass 的 @import 已被弃用,建议使用 @use 和模块化方式(见下文)。


7. 模块化(@use / @forward

// _colors.scss
$primary: #3498db;
$secondary: #e74c3c;// main.scss
@use 'colors';body {background: colors.$primary;
}

8. 继承(Extend)

通过 @extend 继承其他选择器的样式:

.message {padding: 10px;border: 1px solid #ccc;
}.error {@extend .message;color: red;
}

9. 条件语句与循环

条件判断(if/else)
@mixin theme-color($theme) {@if $theme == dark {background-color: #333;color: #fff;} @else {background-color: #fff;color: #333;}
}.container {@include theme-color(dark);
}
循环(for / each)
@for $i from 1 through 5 {.col-#{$i} {width: 20% * $i;}
}// 或者
$list: red, blue, green;
@each $color in $list {.btn-#{$color} {background: $color;}
}

二、Sass 编译方式

你可以使用以下工具将 .scss 文件编译为 .css 文件:

  • Dart Sass(官方推荐)
  • Node.js + sass-loader(配合 Webpack)
  • VSCode 插件如 Live Sass Compiler

安装 Dart Sass:

npm install sass --save-dev

编译命令:

npx sass src/styles.scss dist/styles.css

三、使用建议

技巧说明
使用 _filename.scss下划线开头表示 partial 文件,不会单独编译
模块化组织结构base/, components/, layout/, themes/ 等目录
使用占位符 %避免无用类输出,只用于 @extend
变量命名规范$spacing-sm, $font-title
使用 !default 设置默认值$color: red !default;

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

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

相关文章

【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议

目录 1. 基本概念1.1 基本概念1.2 web应用程序1.3 静态web1.4 动态web 2. web服务器3. tomcat详解3.1 安装3.2 启动3.3 配置3.3.1 配置启动的端口号3.3.2 配置主机的名称3.3.3 其他常用配置项日志配置数据源配置安全配置 3.4 发布一个网站 4. Http协议4.1 什么是http4.2 http的…

AI in Game,大模型能力与实时音视频技术融合,交出AI应用新答卷

随着AI的技术进步和工具普及,尤其是在这两年的跃进之后,AI在游戏行业内的应用已经逐步由理念设想推向落地实践。从蔡浩宇披露的AI新游《Whispers From The Star》到GDC上各大厂家呈现的游戏AI新亮点,我们看到了更多AI与游戏的结合方式&#x…

Android Studio 2022.2.1.20 汉化教程

查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下载:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable

常见的分词算法

常见的分词方法分类如下: 类型名称说明优缺点1️⃣ 基于空格/标点Word-level以空格或标点划分,如 "Hello, world!" → ["Hello", ",", "world", "!"]✅简单,❌无法处理新词,词…

湖北理元理律师事务所观察:债务优化如何成为民生安全网

据央行2023年报告,中国家庭债务收入比达137.8%。面对债务高压,湖北理元理律师事务所的实践揭示:专业债务规划的价值不仅是减负数字,更是构建社会稳定的微观防线。 一、从“催收恐惧”到“主动管理”的转变 该所服务数据显示&…

服务器密码安全运维解决新思路:凭据管理SMS+双因素SLA认证结合的方案

引言:云服务器安全成本困局 在云计算渗透率突破60%的今天,中小企业正面临严峻的安全悖论:某权威机构数据显示,72%的云上数据泄露事件源于凭据管理不当,而传统安全解决方案的采购成本往往超过中小企业年利润的8%。这种…

Vision Transformer网络结构

0.前言 参考CSDN大佬(太阳花的小绿豆)的代码,梳理了一下vit的网络结构,代码地址如下: deep-learning-for-image-processing/pytorch_classification/vision_transformer at master WZMIAOMIAO/deep-learning-for-image-processing GitHub …

C++ 图像处理库 CxImage 简介 (迁移至OpenCV)

文章目录 核心功能特点局限性与替代方案常用方法构造函数从数组创建图像访问属性访问像素点Windows平台支持 常用方法迁移至OpenCV CxImage 是一款功能强大的图像处理类库,主要用于 Windows 平台的图像处理任务。它支持多种图像格式的加载、保存、编辑及特效处理&am…

【博客系统】博客系统第十一弹:从零开始在 Linux 系统上搭建 Java 部署环境并部署 Web 项目

搭建 Java 部署环境 JDK 1. 更新软件包 apt 命令详细介绍 sudo apt-get update2. 安装 OpenJDK 查找 JDK 包 apt list | grep "jdk"安装 JDK sudo apt install openjdk-17-jdk注意: 此处安装的是 OpenJDK,OpenJDK 是一个开源版本的 JDK&am…

智能外呼系统中 NLP 意图理解的工作原理与技术实现

智能外呼系统通过整合语音识别(ASR)、自然语言处理(NLP)和语音合成(TTS)等技术,实现了自动化的电话交互。其中,NLP 意图理解是核心模块,负责解析用户话语中的语义和意图&…

Sigma-Aldrich胰蛋白酶细胞解离方案速览

Sigma-Aldrich_胰蛋白酶用于细胞培养 细胞解离是细胞传代过程中的一个步骤,即细胞从预处理表面分离,形成悬浮液。这些悬浮液对于传代培养重新接种、细胞计数分析和细胞增殖非常重要。有多种蛋白水解酶可用来从粘附基质上脱离细胞,胰蛋白酶就…

宝塔安装WordPress程序

宝塔安装WordPress程序 一、提前准备1,下载WordPress2,在宝塔创建站点 二、部署项目1,上传下载的wordpress压缩包至创建的项目根目录下并解压 三、wordpress安装1,在浏览器打开创建的网站2,开始按照流程安装配置数据库…

【LangChain】框架解析

目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心架构图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…

百度之星2024 初赛第一场 补给

百度之星2024 初赛第一场 补给 题干描述问题分析:C代码Java代码:Python代码补充说明: 题干描述 参考自马蹄集OJ,原文链接1 可怕的战争发生了,小度作为后勤保障工作人员,也要为了保卫国家而努力。 现在有 …

JavaScripts console.log和console.dir区别

console.log 和 console.dir 都是 JavaScript 中用于在浏览器控制台打印信息的方法 ,二者主要有以下区别: 输出内容和格式 console.log:主要用于输出简单的日志信息,直接打印数据的字符串表示 。对于对象、数组等引用类型&#…

uniapp 开发企业微信小程序时,如何在当前页面真正销毁前或者关闭小程序前调用一个api接口

在 UniApp 开发企业微信小程序时,若需在页面销毁或小程序关闭前调用 API 接口,需结合页面生命周期和应用生命周期实现。以下是具体实现方案及注意事项: 一、在页面销毁前调用 API(页面级) 通过页面生命周期钩子 onUnl…

聊聊 Metasploit 免杀

各位小伙伴们,晚上好! 咱们今天打开宵夜“安全食材箱”,聊聊渗透测试绕过杀毒(免杀)的那些门道。你可以把免杀理解为——深夜做宵夜时,家里有人睡觉,但你非得去厨房整点美食,还不能…

Android高级开发第二篇 - JNI 参数传递与 Java → C → Java 双向调用

文章目录 Android高级开发第二篇 - JNI 参数传递与 Java → C → Java 双向调用引言JNI基础回顾JNI中的参数传递基本数据类型传递字符串传递数组传递对象传递 Java → C → Java 双向调用从C/C调用Java方法实现一个完整的回调机制 内存管理与注意事项性能优化提示结论参考资源 …

2025-05-28 Python深度学习8——优化器

文章目录 1 工作原理2 常见优化器2.1 SGD2.2 Adam 3 优化器参数4 学习率5 使用最佳实践 本文环境: Pycharm 2025.1Python 3.12.9Pytorch 2.6.0cu124 ​ 优化器 (Optimizer) 是深度学习中的核心组件,负责根据损失函数的梯度来更新模型的参数,使…