当前位置: 首页 > news >正文

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.xdnf.cn/news/704845.html

相关文章:

  • Vite打包优化实践:从分包到性能提升
  • 自学嵌入式 day 25 - 系统编程 标准io 缓冲区 文件io
  • git+svn+sourcetree客户端下载和安装教程
  • DeepSeek R1开源模型的技术突破与AI产业格局的重构
  • Nacos | 三种方式的配置中心,整合Springboot3.x + yaml文件完成 0错误 自动刷新(亲测无误)
  • 单片机——keil5
  • WSL 开发环境搭建指南:Java 11 + 中间件全家桶安装实战
  • STM32开发全解析:从环境搭建到项目实战的技术文档撰写指南
  • 代谢组数据分析(二十五):代谢组与蛋白质组数据分析的异同
  • day13 leetcode-hot100-23(链表2)
  • xLSTM技术介绍
  • 技术文档写作大纲
  • JWT 不对外,Session ID 对外:构建安全可控的微服务认证架构
  • jenkins集成gitlab实现自动构建
  • 力扣-最长回文子串
  • 【课堂笔记】EM算法
  • stm32cube ide如何将工具链替换成arm-none-eabi-gcc
  • 零基础设计模式——结构型模式 - 代理模式
  • 安装flash-attention失败的终极解决方案(WINDOWS环境)
  • 按照状态实现自定义排序的方法
  • 机器学习数据降维方法
  • Apache Airflow
  • 【MySQL】联合查询(下)
  • 微服务各个部分的作用
  • 【基于SpringBoot的图书购买系统】操作Jedis对图书图书的增-删-改:从设计到实战的全栈开发指南
  • 汽车总线分析总结(CAN、LIN、FlexRay、MOST、车载以太网)
  • 机器视觉2,硬件选型
  • [低代码表单生成器设计基础]ElementUI中Layout布局属性Form表单属性详解
  • 华为OD机试真题——矩形相交的面积(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • spring4第4课-ioc控制反转-详解如何注入参数