sass在3.3引入map类型,它与JS的对象非常相似,它有两种定义模式。外面都是用小括号括括起来,每个键值对可以像JS那样与逗号分开。不同之后是,键名与键值之间的冒号不是 必须的

不用对象的情况


@charset "utf-8";//必须设置了这个才能编译有中文的注释

//创建一个核心的颜色
$bravo_gray: #333; // 将创建的核心颜色分配给一个有语义化的变量
$input-disabled-color: $bravo_gray; $input-disabled-background: lighten($input-disabled-color, 75%);
$input-disabled-border: lighten($input-disabled-color, 50%);
$input-disabled-text: lighten($input-disabled-color, 50%); input[disabled] {
background-color: $input-disabled-background;
border-color: $input-disabled-border;
color: $input-disabled-text;
}
//-------------------------
input[disabled] {
background-color: #f2f2f2;
border-color: #b3b3b3;
color: #b3b3b3; }

使用对象的情况

@charset "utf-8";//必须设置了这个才能编译有中文的注释

//创建一个核心的颜色
$bravo_gray: #333; // 将创建的核心颜色分配给一个有语义化的变量
$input-disabled-color: $bravo_gray;
//键名与键值之间没有冒号,此为旧语法
$input: (
disabled-background lighten($input-disabled-color, 75%),
disabled-border lighten($input-disabled-color, 50%),
disabled-text lighten($input-disabled-color, 50%)
); input[disabled] {
background-color: map-get($input, disabled-background);
border-color: map-get($input, disabled-border);
color: map-get($input, disabled-text);
}
//-------------------------
input[disabled] {
background-color: #f2f2f2;
border-color: #b3b3b3;
color: #b3b3b3; }

可以看到层次感更强了

我们再加上冒号试试

@charset "utf-8";//必须设置了这个才能编译有中文的注释

//创建一个核心的颜色
$bravo_gray: #333; // 将创建的核心颜色分配给一个有语义化的变量
$input-disabled-color: $bravo_gray;
//键名与键值之间没有冒号
$input: (//这是新语法
disabled-background: lighten($input-disabled-color, 75%),
disabled-border: lighten($input-disabled-color, 50%),
disabled-text: lighten($input-disabled-color, 50%)
); input[disabled] {
background-color: map-get($input, disabled-background);
border-color: map-get($input, disabled-border);
color: map-get($input, disabled-text);
}
//-------------------------
input[disabled] {
background-color: #f2f2f2;
border-color: #b3b3b3;
color: #b3b3b3; }

我们再认真看一下$input这东西,其实它的键名可以设计得更整齐统一的,那么下方我们就可以直接循环了。


@charset "utf-8";//必须设置了这个才能编译有中文的注释

//创建一个核心的颜色
$bravo_gray: #333; // 将创建的核心颜色分配给一个有语义化的变量
$input-disabled-color: $bravo_gray;
//键名与键值之间没有冒号
$input: (
disabled-background-color: lighten($input-disabled-color, 75%),
disabled-border-color: lighten($input-disabled-color, 50%),
disabled-color: lighten($input-disabled-color, 50%)
);
input[disabled]{
$arr: background-color border-color color;
@each $name in $arr{
#{$name}:map-get($input, disabled-#{$name})
}
}

我们可以将$input设计得更简洁些,去掉杂质,更名为$disabled-input。然后利用@each可以同时遍历出键名与键值的技巧,将它精简到极致。

@charset "utf-8";//必须设置了这个才能编译有中文的注释

//创建一个核心的颜色
$bravo_gray: #333; // 将创建的核心颜色分配给一个有语义化的变量
$input-disabled-color: $bravo_gray;
//键名与键值之间没有冒号 $disabled-input: (
background-color: 75%,
border-color: 50%,
color: 25%
);
input[disabled]{
@each $key, $val in $disabled-input{
#{$key}:lighten($input-disabled-color, $val);
}
}

有了冒号,方便我们定义深层沟的对象。

$var: (
key: (
key: value,
key: value,
key: (
key: value,
key: value
)
)
);

上面的$disabled-input可改成

$input: (
disabled: (
background-color: 75%,
border-color: 50%,
color: 25%
)
);
//这里定义更多有用方法
//https://github.com/lunelson/sass-list-maps/blob/master/_sass-list-maps.scss

sass对象的定义的更多相关文章

  1. 【翻译十六】java-固定对象的定义方法

    A Strategy for Defining Immutable Objects The following rules define a simple strategy for creating ...

  2. java问题:类的定义,对象的定义?

    java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里 ...

  3. C++ 对象的定义

    1.考虑下面的方法void Print(const Student& s){ printf("Student[%s:%d]\n", s._Name.c_str(), s._ ...

  4. Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...

  5. Javascript脚本 :Function 对象的定义和使用

    javascript  Function 对象的定义 创建函数的语法:var myFunction=new Function(arg1,arg2,...agrN,body);agrN 为函数的参数,b ...

  6. Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性

    Thymeleaf 之 内置对象.定义变量.URL参数及标签自定义属性 本文章来自[知识林] 如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析.日期格式化.数字格式化等).定义 ...

  7. JS中类或对象的定义说明

    本篇文章主要是对JS中类或对象的定义进行说明介绍.我们知道,JS是面向对象的.谈到面向对象,就不可避免的要涉及类的概念.一般像c#,java这些强类型语言都有固定的定义类的语法.而JS的不同之处在于它 ...

  8. SQL Server-数据库架构和对象、定义数据完整性(二)

    前言 本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解,Always to review the basics. 数据库架构和对 ...

  9. c++类的声明和对象的定义---10

    原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化. ...

随机推荐

  1. Javascript设计模式笔记

    Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...

  2. vscode golang插件下载

    此处是windows,linux操作类似 进行如下命令进行目录切换:cd %GOPATH%\src\github.com\golang我这里的GOPATH是在D:\go_project如果src目录下 ...

  3. 为什么样本方差自由度(分母)为n-1

    一.概念.条件及目的 1.概念 要理解样本方差的自由度为什么是n-1,得先理解自由度的概念: 自由度,是指附加给独立的观测值的约束或限制的个数,即一组数据中可以自由取值的个数. 2.成立条件 所谓自由 ...

  4. 在ASP.NET中将GridView数据导出到Word、Excel

    在ASP.NET中将GridView数据导出到Word.Excel asp.net,导出gridview数据到Word,Excel,PDF   #region Export to Word, Exce ...

  5. 解决maven install报错信息(Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile )

    Maven install失败 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (d ...

  6. Nginx(Windows)

    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器. 反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将 ...

  7. (转)ZooKeeper-3.3.4集群安装配置

    转载于 千与 的 http://blog.csdn.net/shirdrn/article/details/7183503 ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向 ...

  8. Qt SD卡 文件系统挂载、文件预览

    /********************************************************************************** * Qt SD卡 文件系统挂载. ...

  9. [QT]QPixmap图片缩放和QLabel 的图片自适应效果对比

    图片大小为600x600 效果图: ui->label->setScaledContents(true);                                         ...

  10. Redis学习笔记-安装篇(Centos7)

    1.安装 这里使用源代码安装的方式,如果你希望使用yum或者rpm包安装的方式,可以百度一下,安装方法可谓多如牛毛. # 下载安装包 # wget http://download.redis.io/r ...