定义一个sass变量

可以说,变量是一个编程语言的基础。所以对于sass来说,变量肯定是浓墨重彩的其中一笔,当然函数也是。那我们如何声明定义一个sass的变量呢?

  1. 变量的符号$
  2. 变量名称
  3. 变量的值

那我们看一下如何使用变量

$color: white;

body{
color: $color;
} div{
color: $color;
}

就是这么简单,当然这个例子很简单,所以暂时看不出它所带来的非凡的效果。

全局变量与局部变量

global

sass中的变量也是分为全局与局部的,在代码块内声明的变量只会在代码块内生效,除非为其添加了!global。前面关于全局和局部变量,学过一点js的都应该懂,这里就不再赘述。我们直接看看如何在局部变量里声明一个全局的变量。

$color: white;

body{
$partial-color: black !global; //若没有!global则会报错,无法编译
$color: red;
} div{
color: partial-color;
color: $color; //编译后仍然是white,说明并未收到上一个代码块的影响
}
default

当然还有一个类似的命令是!default,直接根据语意即可知,它是说明变量值为默认值。任何的值都可以覆盖默认值,即使默认值出现在后面。

$color: red;
$color: blue !default;
body{
color: $color //编译后为red
}

这个default对于组件化的开发是有很大的帮助的,大家也可以思考思考。非default值出现在后面,则是普通的覆盖。若是出现在前面,则是sass自动编译,使用非default值来覆盖default。这个操作会让组件化开发的时候,更易于控制。

特殊变量

一般变量的值是属性值,我们可以拿来直接用。但是如果变量的值是属性名的话,我们就需要使用一个特殊的表达式#{$variab},可以直接看个例子。

$white-color: white;
$black-color: black; body{
.div-#{$white-color}: $white-color;
.div-#{$black-color}: $black-color;
} ------编译后------
body {
.div-white: white;
.div-black: black;
}

这个功能可是十分有用啊,这样我们就可以很舒服的通过变量来控制属性名了。

&操作符

个人感觉&操作符在javascript里,和this指针差不多。这个怎么说呢,就是&变量会自动转化成父层的元素,这样在某些地方可以大有好处,尤其是伪元素。直接来看看例子吧。

$base-color: black;
$hover-color: red; .btn{
color: $base-color; &:hover{
color: $hover-color;
}
}
------编译后------
.btn {
color: black;
}
.btn:hover {
color: red;
}

巧妙利用&操作符,会让我们使用起来更加灵活,自如。

多值变量

这种变量可也真是让人涨姿势,分为list变量和map变量。对应javascript来说,也就是数组和对象。下面一一来简单介绍一下。

list

list中的值,可以用三种形式来区分,空格、逗号还有小括号。其中若灵活混用,则可以做成类似二维数组的变量,如[['white', 'black'] ['red', 'blue']]。那使用什么办法取值呢,sass提供了一个nth($variable, index)的方法。一起来看看吧。

$color: white black red blue;

a{
color: nth($color, 2);
&:hover{
color: nth($color, 4);
}
} ------编译后------
a {
color: black;
}
a:hover {
color: blue;
}

是不是非常的酷!这样可以让我们的变量更加灵活。当然list数据的操作也有非常的自带的函数,想要更多了解的也可以自行查阅。

map

其实map也是大同小异,只是map是根据key和value做更多更自由的事情。这里我就引用一下别人的例子,我觉得这个例子是十分有特色的,也可以省下非常多的时间。

$headings: (h1: 2em, h2: 1.5em, h3: 1.2em);
@each $header, $size in $headings {
#{$header} {
font-size: $size;
}
} ------编译后------
h1 {
font-size: 2em;
}
h2 {
font-size: 1.5em;
}
h3 {
font-size: 1.2em;
}

这里也看到了一个内置函数,@each, $header和$size,则分别代表着循环过程中的key和value。相信大家也是能看得出来的。我们通过一个map,可以如此简洁的定义好三个相似的样式,多让人舒心。


关于sass常用的变量,也差不多讲完了。语法的学习,必须配合实际操作。如果大家对sass感兴趣,可以毫不犹豫加入其中,一定会带你给无限惊喜。

sass学习(2)——关于变量的更多相关文章

  1. 菜鸟的 Sass 学习笔记

    介绍 sass 是什么?? 在sass的官网,它是这么形容给自己的 Sass is the most mature, stable, and powerful professional grade C ...

  2. Sass学习第一天

    Sass学习 网站学习地址: Sass中文网:https://www.sass.hk/docs/#t7-3 Airen的博客:https://www.w3cplus.com/preprocessor/ ...

  3. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  4. Sass学习笔记(补充)

    阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@de ...

  5. Python入门学习:1.变量和简单的数据类型

    python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用   变量,顾名思义是一个可变的量, ...

  6. Shell学习之环境变量配置文件(三)

    Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...

  7. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  8. NodeJS学习:环境变量

    简介 环境变量(environment variables) 不属于 NodeJS 范畴,它是操作系统用于设定执行环境的参数.会在程序运行时传递给应用程序. NodeJS 获取环境变量,是通过 glo ...

  9. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

随机推荐

  1. 《Linux/Unix系统编程手册》读书笔记2

    <Linux/Unix系统编程手册>读书笔记 目录 第5章: 主要介绍了文件I/O更深入的一些内容. 原子操作,将一个系统调用所要完成的所有动作作为一个不可中断的操作,一次性执行:这样可以 ...

  2. (五)CSS伪类(Pseudo-class)

    CSS伪类用于向某些选择器添加特殊的效果.伪类的语法如下: selector : pseudo-class {property: value} CSS类也可以与伪类搭配使用: selector.cla ...

  3. 新装的win7 64位系统上装了IE11,想调试网页的时候,按F12,工具会出来,但是没法正常使用,出现空白。

    Windows专区开了一帖,没人应.这边再开一帖,看看各位遇到过没.如题,新装的win7 64位系统上装了IE11,想调试网页的时候,按F12,工具会出来,但是没法正常使用.尤其是想切换文档模式,只能 ...

  4. c#关键字详解

    c#关键字   关键字是对编译器有特殊意义的预定义的保留标识符.它们不能在程序中用作普通标识符,除非在它们前面加上@前缀. 第一部分 一.访问关键字:base,this base:访问基类的成员. 用 ...

  5. VS2015中的异常配置

    The New Exception Settings Window in Visual Studio 2015Managing Exceptions with the Debugger Underst ...

  6. Android开发之“点9”

    “点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在 ...

  7. UVa 10837 (欧拉函数 搜索) A Research Problem

    发现自己搜索真的很弱,也许做题太少了吧.代码大部分是参考别人的,=_=|| 题意: 给出一个phi(n),求最小的n 分析: 回顾一下欧拉函数的公式:,注意这里的Pi是互不相同的素数,所以后面搜索的时 ...

  8. UVa 10129 Play On Words【欧拉道路 并查集 】

    题意:给出n个单词,问这n个单词能否首尾接龙,即能否构成欧拉道路 按照紫书上的思路:用并查集来做,取每一个单词的第一个字母,和最后一个字母进行并查集的操作 但这道题目是欧拉道路(下面摘自http:// ...

  9. NoSQL 数据库系统对比

    虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQ ...

  10. liux下ftp链接服务器的常用命令

    FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用 FTP,都会遇到大量的FTP内部命令.熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍 ...