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

Appsflyer Web2App实战指南:OneLink与Web SDK深度对比

本文深入对比了Appsflyer实现Web2App的两大核心工具:OneLink智能链接与Web SDK。OneLink提供开箱即用的智能跳转,部署快捷,适合快速推广;Web SDK则支持高度自定义的用户行为追踪,适合深度分析与精细化运营。文章提供了详细的配置指南、场景化选型建议及实战避坑技巧,帮助营销与开发团队根据自身需求选择最佳方案,有效提升从网页到应用的转化率与归因精度。

weixin_29213655的博客 458

Sass:深度解析与实战应用

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

风之少女梦的博客 778

【Unity】制作简易三维场景

本文介绍如何制作一个三维场景

CiNian_的博客 5333

【YOLO26实战全攻略】08——YOLO26模型导出与部署全攻略:从训练权重到生产环境(含5种格式+INT8量化+实战案例)

本文聚焦YOLO26模型从训练权重到生产环境的全流程部署,针对“训练精度高、部署效果差”的行业痛点,详解其无NMS端到端推理、量化友好架构、全格式导出三大核心优势。内容涵盖ONNX、TensorRT、OpenVINO、TFLite、CoreML五种主流格式的导出原理与实操步骤,深入剖析INT8量化、混合量化等边缘优化技术,并通过智慧园区车辆检测虚拟案例,完整演示从模型准备、格式导出、引擎适配到性能验证的全流程。文中提供可直接复制运行的代码、详细执行结果及避坑指南,兼顾新手入门与进阶读者提升,更好的帮助读者。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 502

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

SPI为什么不需要加上拉电阻

大家好,我是记得诚。I2C因为其开漏的结构,无法输出高电平,所以外部加上拉电阻。我们在使用SPI的时候,发现是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。

记得诚 2629

在项目中使用Sass

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

Jason's Word 5418

TVBox源总失效?不如自己搭建一个!告别不稳定!手把手教你自建TVBox源,全网资源尽掌握!

🚀 TVBox源总失效?别慌!手把手教你自建TVBox源,打造一个稳定、海量、无广告的影视宝库!从此告别片荒,尽享丝滑观影体验!

XiaoqiangClub的博客 5462

分布式优化 (Distributed Optimization) 算法详解及案例分析

分布式优化是一种将优化问题分解为多个子问题并在多个计算节点上并行求解的方法。其目标是通过分布式计算资源高效地求解大规模优化问题。

闲人编程的博客 2709

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

【架构】-- StarRocks 和 Doris 介绍与选型建议

查询性能 | ✅ 高性能,支持向量化执行和 CBO 优化器 | ✅ 高性能,优化的查询引擎 |- **实时性要求高**:如果业务对数据的实时性要求较高,建议选择 **StarRocks**,其在实时数据处理和低延迟查询方面表现优越。- **复杂查询需求**:对于需要处理复杂多表关联查询的场景,两者均可胜任,需根据具体性能测试结果进行选择。

欢迎来到我的博客,一起探索代码里的世界! 1835

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

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

努力,加油每一天鸭~ 1037

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

qq_46032105的博客 1433

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Sass】Sass

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

shisanxiang_的博客 1587

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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、付费专栏及课程。

余额充值