Sass

Stella981
• 阅读 969

变量可以让整个网站保持一致性。你可以定义一个变量,然后在其他地方引用它,而不必再重复相同的值。要改这些值,只需在定义变量的那一个地方修改。

下面的Sass代码包含两个变量:$primary-color$secondary-color

$primary-color: orange;
$secondary-color: gold;

body {
  color: $primary-color;
  background: $secondary-color;
}

变量就像存储值的容器。在本例中,我们将值orange、gold存储在变量中。

每次需要使用orange颜色时,可以使用变量名来代替orange颜色。如果需要改一个颜色,只需在定义变量的那一个地方修改。

变量定义

  • 变量以美元符号($)开头,后面跟变量名。
  • 变量名和赋值之间用冒号(:)分隔。

注意:缩进语法、SCSS语法中,变量定义都是一样的。

连字符和下划线

变量名中连字符和下划线等效,$primary_color$primary-color是同一个变量。

下面的代码可以正常工作:

$primary_color: orange;
$secondary_color: gold;

body {
    color: $primary-color;
    background: $secondary-color;
}

局部变量

选择器中定义的变量是局部变量,作用范围是该选择器

示例:

header {
    $header-color: orange;
    color: $header-color;
}

不能在选择器外面使用局部变量,下面的做法是错误的:

header {
    $header-color: orange;
    color: $header-color;
}
article {
    color: $header-color;
}

如果编译该代码,会报错: error: Undefined variable: "$header-color"

!global 标志定义全局变量

可以在选择器中使用 !global 标志定义全局变量。

示例:

header {
    $header-color: orange !global;
    color: $header-color;
}
article {
    color: $header-color;
}

$header-color使用了全局变量标志,被定义为全局变量,外部就可以使用该变量。这段代码会编译成以下CSS:

header {
    color: orange; }

article {
    color: orange; }

变量值

变量值除了前面举例的颜色外,可以是任何css值,如字体族、字体权重、边框宽度、背景图像等

多种值类型示例:

$primary-color: orange;
$secondary-color: gold;
$font-stack: 'Open Sans', Helvetica, Sans-Serif;
$border-thick: 10px;
$border-bright: orange;
$border-style: solid;
$article-width: 60%;
$article-padding: 20px;
$article-margin: auto;

body {
    color: $primary-color;
    background: $secondary-color;
    font-family: $font-stack;
}
article {
    border: $border-thick $border-style $border-bright;
    width: $article-width;
    padding: $article-padding;
    margin: $article-margin;
}

上面的代码编译输出的CSS:

body {
  color: orange;
  background: gold;
  font-family: "Open Sans", Helvetica, Sans-Serif; }

article {
  border: 10px solid orange;
  width: 60%;
  padding: 20px;
  margin: auto; }

/*# sourceMappingURL=styles.css.map */

默认值

变量可以设置默认值。当变量没有赋值时会使用默认值。

默认值使用!default标志设置。

示例:

$primary-color: orange;
$primary-color: gold !default;

body {
  color: $primary-color;
}

编译输出的CSS如下:

body {
  color: orange; }

本例中没有使用默认值,因为该变量有赋值:$primary-color: orange;

如果去掉赋值,就会使用默认值。如下所示:

$primary-color: gold !default;

body {
  color: $primary-color;
}

编译后的CSS如下所示:

body {
  color: gold; }

变量数据类型

SASS有七种主要数据类型:

  • Numbers (e.g. 15, 3.5, 50px)
  • Strings 可带可不带引号 (e.g. "foo", 'foo', foo)
  • Colors (e.g. orange, #ffcc00, rgba(105, 255, 0, 0.7))
  • Booleans (e.g. true, false)
  • Nulls (e.g. null)
  • Lists 空格或逗号分隔 (e.g. 2.5px 10px 0 7px, Helvetica, Arial, sans-serif)
  • Maps (e.g. (key1: value1, key2: value2))
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Sass
嵌套规则(NestedRules)Sass允许将一套CSS样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器mainp{color:00ff00;width:97%;.redbox{
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这