Sass

在vscode中开发sass教程:sass语法 阅读详情

Sass

SASS是一个成熟、稳定、强大的 CSS 扩展语言解析器,提供变量、嵌套、混合、继承等特性,大大节省了设计者的时间,使得CSS的开发变得简单和可维护

语法

  • 注释
    sass有两种注释方式(与js相同)
    • 多行注释/* */
    • 单行注释//
body {
  color: #333; // 这种注释内容不会出现在生成的css文件中
  padding: 0; /* 这种注释内容会出现在生成的css文件中 */
}
  • 变量
    sass的变量必须是$开头,后面紧跟变量名,而变量值和变量名之间就需要使用冒号(:)分隔开(就像CSS属性设置一样)。

    • 全局变量与局部变量
      定义在任何选择器之外的变量被认为是全局变量,定义在选择器内的变量称之为局部变量。

      但启用了global后,即使写在局部也能覆盖全局变量(sass 3.4版本后可用)

      $color:#fff !global;
    • 默认变量:sass的默认变量仅需要在值后面加上!default即可。

          $fontSize:12 !default;

    覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可(一般用于文件引用):

        $fontSize:16;
        $fontSize:12 !default;//此行代码是另一个文件中的代码(查看@import)
    • 变量特殊用法,一般我们定义的变量都为属性值,可直接使用,但是如果变量作为属性或在某些特殊情况下等则必须要以#{$variables}形式使用

          $borderDirection:top !default;
          //应用于class和属性
          .border-#{$borderDirection}{
            border-#{$borderDirection}:1px solid #ccc;
          }
    • 多值变量,多值变量分为list类型和map类型,简单来说list类型有点像js中的数组,而map类型有点像js中的对象。

      //list类型
      $pd: 5px 10px 20px 30px;
      
      //使用
      .content{padding:$pd;}
      .btop{border-top:nth($pd,1);}
      
      
      //map类型
      $headings: (h1: 2em, h2: 1.5em, h3: 1.2em);
      
      //使用
      h1{map-get($headings,h1)}
  • 嵌套(Nesting)
    css中重复写选择器是非常恼人的。如果要写一大串指向页面中同一块的样式时,往往需要 一遍又一遍地写同一个ID

    #content article h1 { color: #333 }
    #content article p { margin-bottom: 1.4em }
    #content aside { background-color: #EEE }

sass写法:

    #content {
      article {
        h1 { color: #333 }
        p { margin-bottom: 1.4em }
      }
      aside { background-color: #EEE }
    }
- 在嵌套中用&表示父元素选择器
  • 混合器(了解)
    变量可以实现简单样式的重用(如color,width等),但是当你的样式变得越来越复杂,你需要大段大段的重用样式的代码,可以通过sass的混合器实现重用

    sass中使用@mixin声明混合,通过@include来调用

    • 无参数mixin
    • 有参数mixin:参数名以$符号开始
    • 多个参数mixin:多个参数以逗号分开
    • @content:多用于媒体查询的封装
        @mixin max-screen($res){
          @media only screen and ( max-width: $res )
          {
            @content;
          }
        }
        @include max-screen(480px) {
          body { color: red }
        }

PS:@mixin通过@include调用后解析出来的样式是以拷贝形式存在的,而下面的继承则是以联合声明的方式存在的,所以从3.2.0版本以后,建议传递参数的用@mixin,而非传递参数类的使用下面的继承%。

  • 继承
    使用选择器的继承,要使用关键词@extend

    • 继承一般样式
      @extend h1
    • 占位选择器%
      //占位符编译后不存在css样式中
          %ir{
            color: transparent;
            text-shadow: none;
            background-color: transparent;
            border: 0;
          }
          @extend %ir;
  • 函数
    Sass中的数字函数提要针对数字方面提供一系列的函数功能:

    • 常用函数:
      • percentage($value):将一个不带单位的数转换成百分比值;
      • round($value):将数值四舍五入,转换成一个最接近的整数;
      • ceil($value):将大于自己的小数转换成下一位整数;
      • floor($value):将一个数去除他的小数部分;
      • abs($value):返回一个数的绝对值;
      • min($numbers…):找出几个数值之间的最小值;
      • max($numbers…):找出几个数值之间的最大值。
      • lighten( color, percent)
      • darken( color, percent), color颜色值, percent百分比
    • 自定义函数
      格式:@fuction 函数名
          $oneWidth: 10px;  
          $twoWidth: 40px;  
      
          @function widthFn($n) {  
            @return $n * $twoWidth + ($n - 1) * $oneWidth;  
          }  
      
          .leng {   
              width: widthFn($n : 5);  
          } 
  • 运算
    sass具有运算的特性,可以对数值型的Value(如:数字、颜色、变量等)进行加减乘除四则运算。请注意运算符前后请留一个空格,不然会出错。

  • 条件判断及循环

    • @if判断
      @if可一个条件单独使用,也可以和@else结合多条件使用

      @if $type == ocean {
          color: blue;
      } @else if $type == matador {
          color: red;
      } @else {
          color: black;
      }
    • for循环

          @for $var from <start> through <end>(包含end值)
          @for $var from <start> to <end>(不包含en值)
  • 导入
    sass中导入其他sass文件,最后编译为一个css文件,优于纯css的@import

    @import 'reset';

编译

  • gulp-sass
    • 参数outputStyle:
      • nested(默认)
      • expanded:展开
      • compact:单行
      • compressed:压缩
    gulp.task('sass', function () {
        return gulp.src('./sass/**/*.scss')
        .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
        .pipe(gulp.dest('./css'));
    });

    //文件监听(文件有修改自动编译)
    gulp.task('sassWatch',function(){
        gulp.watch('./src/sass/*.scss',['sass']);
    });

文件名以_开头的sass文件不会被编译成css文件


[练习]

  1. 使用Sass改造项目中的CSS文件
什么是Sass,如何使用? Sass(Syntactically Awesome Style Sheets)是一种扩展了 CSS 的样式表语言,旨在使 CSS 更加易于维护、可读和可扩展。Sass 添加了一些功能,使得样式表开发过程更加高效和灵活。本文将深入探讨 Sass 的概念、特性、安装与配置、基本语法、使用技巧以及最佳实践。 阅读详情

相关推荐

Sass和Compass 实战

Sass和Compass 实战

Sass实战运用,如何利用好Sass

Sass(Syntactically Awesome Stylesheets)是一种CSS预处理器,它提供了许多强大的功能,如变量、嵌套规则、混合(Mixins)、函数等,使得CSS的编写更加高效、灵活和易于维护。武汉优联前端科技有限公司由一批从事前端10余年的专业人才创办,是一家致力于H5前端技术研究的科技创新型公司,为合作伙伴提供专业高效的前端解决方案,合作伙伴遍布中国及东南亚地区,行业涵盖广告,教育, 医疗,餐饮等。,这是Sass的一种约定,表示该文件是一个部分文件,不应直接编译为CSS文件。

ufrontend的博客 1367

Doris副本修复实战:从状态机到手动修复的完整指南

在分布式数据库系统中,多副本机制是实现高可用与数据一致性的核心技术。其原理是通过在不同节点存储数据的多个拷贝,确保部分节点故障时服务仍可继续。这项技术的核心价值在于保障数据可靠性,并支撑在线分析处理(OLAP)等对数据一致性要求高的应用场景。当副本出现损坏、丢失或版本不一致时,系统通常依赖自动修复机制,但在元数据损坏、多副本同时故障等复杂场景下,自动修复可能失效,需要深入理解副本状态机并借助手动工具介入。本文将聚焦Doris数据库,解析Tablet副本状态流转(如BAD、VERSION_ERROR),并详细

weixin_32288959的博客 462

Sass:深度解析与实战应用

在前端开发的浪潮中,CSS预处理器因其强大的功能和灵活性而备受推崇。其中,Sass(Syntactically Awesome Stylesheets)无疑是这些预处理器中的佼佼者。本文将深入解析Sass的核心概念、语法特性以及实战应用,并通过代码样例展示其强大的功能。

风之少女梦的博客 778

DDR5内存命令真值表详解:如何正确解析JESD79-5标准中的关键指令

本文深度解析JESD79-5标准中的DDR5内存命令真值表,将其视为动态通信协议进行拆解。详细阐述了1-Cycle与2-Cycle命令的区别、Bank Group寻址机制以及模式寄存器(MR)操作流程,为硬件与固件工程师提供了从信号解析到系统调试的完整实战指南,是理解和优化高性能计算平台内存子系统的核心。

numpy6sculptor的博客 548

数通基础(基本网络通信原理、IP地址如何配置、DHCP、DNS域名系统、路由技术基础、静态路由 、TCP和UDP、vlan虚拟局域网、trunk、三层交换)

我们知道了1、电脑开机,通过dhcp获取ip地址2、电脑输入域名,www.baidu.com电脑把www.baidu.com发到自己的dns服务器3、dns服务器把域名解析成对应的ip地址4、电脑向百度服务器发送一个请求。

qq_53235556的博客 6482

Sass实战 sass官网

 Sass实战 sass官网  1.相关视频教程:http://pan.baidu.com/s/1eSl8bUa     1.1我的项目源码:http://pan.baidu.com/s/1dFmqbyp     1.2首页展示(仅显示首页截图pc端,移动端)             2.项目结构      3.项目首页布局    ...

dongjiong0213的博客 198

基于MCP协议的AssistAI:深度集成Eclipse的AI编程助手实战指南

在AI辅助编程领域,大型语言模型(LLM)与开发工具的深度集成是提升开发效率的关键。其核心原理在于通过标准化的协议(如MCP,Model Context Protocol),将IDE的功能封装为AI可调用的工具集,从而实现环境感知与操作同步。这项技术的价值在于打破了传统AI编程工具与开发者工作流的割裂,使AI能够以符合工程规范的方式直接操作项目,如进行代码重构、运行测试和交互式调试。其典型应用场景包括复杂代码导航、自动化测试生成与精准的增量编译。本文以Eclipse插件AssistAI为例,详细解析了如何通

weixin_42531579的博客 561

在项目中使用Sass

听到最多的一句话就是我会CSS,我能使用CSS写项目,为什么我要花时间去学习Sass,一个自己并不了解的东西,一个对于自己来说是全新的东西?看到这样的问题,让我想起了2010年讨论CSS3的时候,很多同学同样有这样的凝问,CSS3真的会来?我真的要学习CSS3?现在,时间证明了一切。我还是想说,很多东西并不是需要的时候才去学,机会是给有准备的同学。 似乎有些离题了,我们还是回到今天的话题中来

Jason's Word 5418

LVGL 实战:虚拟列表与对象复用机制在嵌入式GUI中的性能优化

本文深入探讨LVGL虚拟列表与对象复用机制在嵌入式GUI中的性能优化实践。通过复用机制动态管理UI对象,大幅降低内存占用,实现无限滚动列表的流畅体验。文章详细解析核心算法、内存优化策略及跨平台适配技巧,帮助开发者在资源受限设备上高效处理大量数据展示。

rice5的博客 1107

智能手环心率检测不准?用STM32+MAX30102教你实现医疗级精度(含算法优化)

本文详细解析了如何利用STM32微控制器和MAX30102光学传感器实现医疗级精度的心率检测方案。通过硬件参数调校、ADC采集优化、运动伪影消除及深度学习算法改进,显著提升智能手环在静态和运动状态下的检测精度,误差可控制在±1.5bpm以内,满足医疗电子标准。

weixin_28335283的博客 530

dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题

2020 年 10 月 27 日,Sass 官方团队正式宣布 Libsass 将弃用,以及基于它的 Node Sass 和 SassC,并且建议用户使用 Dart Sass。如果在 vue 脚手架搭建的项目中需要使用 sass,建议初始化时勾选 sass 配置,自行安装,选择默认的就是 dart-sass。dart-sass 替代 node-sass 根本原因:node-sass 无法下载特定版本的二进制依赖文件(博主没有深入研究)dart-sass 使用前需要注意几点:

qq_38687592的博客 2450

从 OPEN CURSOR 到 SELECT INTO TABLE:把 ABAP 数据读取的底层机制与性能差异讲透

ABAP数据库访问性能优化关键点 摘要:ABAP程序性能的核心在于数据读取方式的选择。本文分析了三种常见数据库访问方式的技术原理:显式游标(CURSOR)、SELECT-ENDSELECT循环和SELECT INTO TABLE。重点揭示了数据从数据库到应用服务器的传输机制,包括OPEN/REOPEN与FETCH操作、Array Fetch批量传输原理以及SAP游标缓存机制。通过VBAK表的性能测试数据对比,证明了不同场景下最优访问方式的选择依据:大数据量时显式游标性能优势明显,而SELECT INTO T

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

vue node node-sass sass-loader 版本 对应 与 兼容

同时即便切换到低版本node12中可以正常运行,但项目中使用了一些node12以上的代码语法,比如node14才支持的可选链语法,然后其它开发人员拉代码之后,就要么高版本node无法拉取node-sass包,要么切换低版本无法运行一些高版本node才支持的语法。同时上面只是一部分sass-loader的版本对应,因为没有提供官方的对应规则,所以上面的版本还是不对的话,确定好node和node-sass版本之后,可以一个一个尝试sass-loader的版本,所有版本:sass-loader - npm。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 2731

第 0 篇|开篇:为什么我们要从 RNN 讲到 Transformer?

本文介绍了NLP模型的发展历程,从早期规则式方法到如今Transformer模型的演进脉络。文章强调理解NLP技术需要从基础模型入手,重点分析了传统机器学习的局限性(无法处理变长有序输入和深层语义关联),以及RNN如何通过循环结构首次实现顺序依赖捕捉。作者指出Transformer之所以成为主流,是因为它通过自注意力机制解决了RNN的核心痛点(低效串行处理和长距离依赖问题)。专栏将采用"从问题到解决方案"的讲解方式,帮助读者建立完整的NLP知识体系,避免孤立学习和盲目追新。全文旨在为初学

记录 IT 领域经验与见解的博客 73

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Sass初探:嵌套只是开始,解锁Sass更多功能

Sass初探,嵌套只是开始,解锁Sass更多功能。Sass(SyntacticallyAwesomeStyleSheets)是一种强大的CSS预处理器,它通过引入变量、嵌套、混合宏(mixins)、函数等功能,极大地提升了样式表的可维护性和开发效率。

qq_46032105的博客 1433

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Sass】Sass

SASS是一种 CSS 预处理器,可以编译成标准的 CSS,提高了代码的复用性、可维护性和可读性。扩展名.sass或.scss。其中.sass使用缩进语法,无需花括号和分号;.scss更接近标准 CSS 语法。可以使用@function定义自己的函数,以实现复杂的样式逻辑。

shisanxiang_的博客 1587

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Sass基础

SASS还有多种实用的技术可以学习,这里只是较为基础的部分,详细可以参考下面链接!——!Sass 输出样式_w3cschool。

2403_87566238的博客 1197

使用gulp实时编译sass/sass

背景 在我们新开始的项目中,我们打算使用scss来作为我们的样式书写语言。同时,所有的sass/scss文件经过编译转化成css文件后要存放到跟scss/sass文件相同的目录下。整个前端团队已经有实时的代码编译构建工具,那么我们只需要书写自己的实时scss/sass构建工具,生成对应的css文件后,团队的实时构建工具也会触发编译,做打包构建处理。 第三方包选型 基于gulp的sass/sc

fendouzhe123的专栏 1万+

Sass有什么优势

Sass与CSS有什么区别? 1.嵌套 第一个对Web开发人员的工作流程造成最大影响是Sass语法中的代码嵌套和缩进。使用常规的CSS,每个元素在自己的“声明块”中独立变化,你可以想象一下,如果一个房间里满地都是不同大小的箱子会是什么样子。而通过Sass,你可以在嵌套的块里将相关的元素组合在一起,然后想象一下,同样是那个房间,现在,一些小箱子已经放在大箱子里了,你可以再次看到可爱的地板了。 ...

weixin_39110677的博客 3465

Sass复习篇

Sass 是常见的css预处理器的一种,他提供了许多遍历的写法,让css开发变得更为简单和强大。Sass有两种版本,Sass和Scss,两者之间的区别在于语法,Sass使用缩进的方式书写,而Scss使用大括号的方式书写,Scss是Sass的升级版,兼容Sass的所有功能。所我们一般书写时都是用Scss的语法形式。

2301_76380626的博客 1259

SASS从安装到使用

1.SASS安装 一、安装Ruby  Sass是用Ruby语言写的,但是两者的语法没有关系,所以学 Sass 不用学 Ruby,只是必须先安装Ruby,然后再安装Sass。  戳这里下载,根据自己对应的版本进行下载 二、安装完成 完成后运行cmd进入命令符,输入ruby -v查看版本号,如果能正确显示版本号,则说明ruby安装成功。 ...

左眼回忆的博客 1万+

React Sass

安装sass和配置 Webpack 或 Vite 加载.scss文件(参考项目文档)。

likuoelie的博客 1079

vue中安装node-sass、sass-loader报错问题解决方法

1、首先执行以下代码,卸载老版node-sass、sass-loader(因为你有可能安装上了其中一个,但另一个安装不了)问题描述:在进行一个vue项目练习时需要导入node-sass、sass-loader这两个依赖,书本提供代码是。2、查找与自己node版本对应得node-sass版本。3、最后安装sass-loader,适合的版本可以直接到网上去搜索,比如我一开始找到的版本是 10.0.1 然后还是安装失败,最后换成 10.2.0 安装成功。最后希望我的尝试能帮助你解决问题!

weixin_61626012的博客 5888

替换node-sass为dart-sass

选择dart-sass的理由 官网 1.Sass 是一种 CSS 的预编译语言。它提供了 变量(variables)、嵌套(nested rules)、 混合(mixins)、 函数(functions)等功能,并且完全兼容 CSS 语法。Sass 能够帮助复杂的样式表更有条理, 并且易于在项目内部或跨项目共享设计。 2. 在 v4.3.0之前本项目都是基于node-sass进行构建的,但node-sass底层依赖 libsass,导致很多用户安装的特别的困难,尤其是 windows

来了波,兄嘚 8731

从node-sass迁移到Dart Sass完整指南

从node-sass迁移到Dart Sass完整指南 【免费下载链接】node-sass :rainbow: Node.js bindings to libsass 项目地址: https://gitcode.com/gh_mir...

gitblog_00470的博客 1255
上一篇: Gulp
Hyperyou
博客等级 码龄9年 8粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值