SASS 中变量的默认值


SASS 中定义的变量,后设置的值会覆盖旧的值。

$color: red;
$color: blue;

.btn {
    color: $color;
}

编译后为:

.btn {
  color: blue; }

如果你编写了一个 UI 库提供 SASS 文件,可能会提供一些参数供用户使用时自定义。而在 SASS 组件内部,我们需要应用上用户设置的这些值。但是如果使用者没有自定义变量的值,那这些变量应该有自己的默认值。

利用前面提到的覆盖机制是不能实现的。因为无论是你在 @import UI 库之前设置还是之后,都不能影响这个导入文件中的值。如果你设置的值在导入之前,那么 UI 库中的变量因为在后面,所以你的设置会被覆盖而不起作用;如果你的设置在导入之后,那更加不起作用了。

假设这是 UI 中的样式文件:

_lib.scss

$color: red;
.btn {
    color: $color;
}

在另一个文件中使用,并且试图自定义变量的值:

page.scss

@import ‘lib‘;
$color: blue;

或:

page.scss

$color: blue;
@import ‘lib‘;

两者编译结果均为:

.btn {
  color: red; }

!default

针对这种情况,SASS 提供了 !default 标识。将该标识应用于变量值后面,表示如果该变量没有在其他地方定义或即便定义了但值为 null,那此处设置的默认值才生效,否则使用其他地方设置的那个值。

将上面 _lib.scss 进行改造:

_lib.scss

- $color: red;
+ $color: red!default;
.btn {
    color: $color;
}

使用:

$color: blue;

@import "lib";

注意:需要将自定义的值先于 @import,否则也不生效。

此时编译结果将是想要的那样,应用上了外部自定义的变量值。

.btn {
  color: blue; }

相关资源

原文地址:https://www.cnblogs.com/Wayou/p/sass_default.html

时间: 2024-10-15 11:34:37

SASS 中变量的默认值的相关文章

Logback.xml 给变量指定默认值

随着通用日志组件转入 Slf4j,logback 也变成了默认的日志实现,像 log4j 一样,logback.xml 中也可以使用系统属性或环境变量,如 ${catalina.home}.在 log4j.properties 中,如果变量在系统属性和环境变量中找不到的话默认为 "" 空字符串,而到了 logback.xml 中如果某个变量找不到默认就是 "变量名_IS_UNDEFINED" 了,这样就比较奇怪了. 那如何在没有配置 catalina.home 系统

14.自学Linux之路:位置参数,交互式脚本,给变量以默认值

知识点1:位置参数 位置参数:#/tmp/tesh.sh  3  89 $0:脚本自身 $1:脚本的第一个参数 $2:脚本的第二个参数 .... 例:任意给两个整数,求和,差,积,商 #nano  dd.sh #!/bin/bash # echo $1 echo $2 echo $0 #chmod  +x  dd.sh #./pos.sh  5 9 结果:5 9 dd.sh  #!/bin/bash  #  echo "the sum is :$[$1+$2]."  echo &quo

Swift——(五)Swift中的那些默认值

在Swift语言中,有很多默认值,这里将常用的总结,欢迎补充. @Author: twlkyao 1.函数(方法)形参 在函数(方法)中,形参默认是常量,这主要是为了防止误操作,在调用函数(方法)时改变了实参的值,所以使用常量,如果想在函数内部对实参进行修改,可以使用var关键字进行标识,但是这并没有结束,如果想在函数(方法)调用结束之后仍然可以使用修改后的值,需要使用inout关键字进行标识,同时不要使用var对形参进行标识,在调用函数(方法)的时候,传递的实参,需要使用"&"

弹窗中修改select默认值遇到的问题

弹窗中修改select默认值无效 前提: 项目中遇到一个需求, 在一个弹窗中,有很多个select都是在打开弹窗的同时由js自动生成的(每次打开都自动重新生成一遍). 弹窗打开后,从每个select的下拉选中选中一个值.然后弹窗下面有个确定按钮. 点确定 按钮,将每个select选中的值保存起来. 下次再次打开弹窗时,每个自动生成的select中都默认值显示上次选中的值. 我的思路是: 1.在每次点 确定 按钮 时: 新建一个 js 对象jsonObj,每次点 确定后把 每个select的id(

成员变量的默认值

在java中,对象的名称保存在栈空间中,而成员变量保存在堆内存中. 实际上在类创建对象时,编译器会为对象的各类型的成员变量赋一个默认值,无论是基本数据类型还是引用数据类型 序号 类成员变量数据类型 默认值 1 byte 0 2 short 0 3 int 0 4 long 0L 5 flaot 0.0F 6 double 0.0D 7 char '\u0000'空 8 boolean false 9 引用数据类型 null 原文地址:https://www.cnblogs.com/hps-y/p

Action 名称搜索顺序&Action配置中的各项默认值

Action 名称的搜索顺序  一级一级往上,若命名空间包存在,但Action不存在,则跑到默认命名空间. Action 配置中的各项默认值    默认类class:ActionSupport    默认方法method:action的 execute    默认result name :success

【Struts2学习笔记(2)】Action配置中的各项默认值和Action中result的各种转发类型

一.Action配置中的各项默认值 <span style="font-size:18px;"><package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction&quo

PostgreSQL中实现更新默认值(二)

今天我们用表继承+触发器的方案,来实现表中的更新默认值.这也许是PostgreSQL里最佳的解决方案. 一. 创建一张表,作为父表 create table basic_update( t_update timestamp); 二. 创建一个函数,用作最后负责修改t_update使用 CREATE OR REPLACE FUNCTION update_modified_column() RETURNS TRIGGER AS $$BEGIN NEW.t_update = now(); RETURN

vue中$event理解和框架中在包含默认值外传参

vue中$event理解和框架中在包含默认值外传参:https://blog.csdn.net/qq_43702430/article/details/90692242?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1 原文地址:https://