博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sass函数:Sass Maps的函数-map-has-key($map,$key)
阅读量:6982 次
发布时间:2019-06-27

本文共 2101 字,大约阅读时间需要 7 分钟。

map-has-key($map,$key) 函数将返回一个布尔值。当 $map 中有这个 $key,则函数返回 true,否则返回 false。

前面的示例,当 $key 不在 $map 中时,使用 map-get($map,$key) 函数将返回一个 null 值。但对于开发人员,并看不到任何提示信息。如果使用 map-has-key($map,$key) 函数就可以改变这一状态。我们来看一个简单的示例。

@if map-has-key($social-colors,facebook){
.btn-facebook { color: map-get($social-colors,facebook); }} @else {
@warn "No color found for faceboo in $social-colors map. Property ommitted."}

编译出来:

.btn-fackbook{
color: #3b5998;}

上面看到的示例是 facebook 这个 key 已存在 $social-colors 这个 map 当中。所以能正常编译。如果你手误,将 facebook 输错了:

@if map-has-key($social-colors,faceboo){
.btn-facebook { color: map-get($social-colors,facebook); }} @else {
@warn "No color found for faceboo in $social-colors map. Property ommitted."}

这个时候,你编译出来的 CSS 代码中,不会有新代码添加,但在命令终端可以看到提示信息:

WARNING: No color found for faceboo in $social-colors map. Property ommitted.         on line 25 of test.scss

是不是非常的友好。但总觉得这样写是傻傻的,总不可能每获取一个 key 都写一个 @if 语句吧。其实不用这么复杂,我们可以自定义一个函数,比如 colors():

@function colors($color){
@if not map-has-key($social-colors,$color){ @warn "No color found for `#{$color}` in $social-colors map. Property omitted."; } @return map-get($social-colors,$color);}

有了这个函数之后,我们就可以这样使用

.btn-dribble {
color: colors(dribble);}.btn-facebook {
color: colors(facebook);}.btn-github {
color: colors(github);}.btn-google {
color: colors(google);}.btn-twitter {
color: colors(twitter);}.btn-weibo {
color: colors(weibo);}

编译出来的 CSS:

.btn-dribble {
color: #ea4c89;}.btn-facebook {
color: #3b5998;}.btn-github {
color: #171515;}.btn-google {
color: #db4437;}.btn-twitter {
color: #55acee;}

同时你不难发现,命令终端提示信息:

WARNING: No color found for `weibo` in $social-colors map. Property omitted.         on line 13 of test.scss

那是在 $social-colors 这个 map 中没有 weibo 这个 key。是不是很有意思。

当然,如果你对 Sass 的指令熟悉的话,上面编译出来的 CSS 可以使用 @each:

@each $social-network,$social-color in $social-colors {
.btn-#{$social-network} {
color: colors($social-network); }}

 

转载于:https://www.cnblogs.com/qjuly/p/9118475.html

你可能感兴趣的文章
mysql 同步redis
查看>>
iOS中的一些小知识点
查看>>
Oracle 11g RAC 添加新节点及故障解决案例
查看>>
docker logstash 使用
查看>>
Linux Study之--RedHat EL6配置VNC server
查看>>
负载均衡集群之lvs
查看>>
(三) Graphivz 基本图片类型
查看>>
ubuntu 升级过程中断电时遇到的问题总汇
查看>>
Netscaler基于policy的log action
查看>>
删除sql server 表中的重复数据!
查看>>
水仙花数
查看>>
初识set集合
查看>>
怎么寻回调整分区后盘符丢失的数据
查看>>
警惕!MySQL成数据勒索新目标
查看>>
linux系统学习第一天
查看>>
eclipse的安卓开发插件『ADT』在线安装不成功的解决方案
查看>>
第12章,网络管理(下)网络基础配置
查看>>
DTU是什么 DTU种类及应用领域分析
查看>>
基于Zynq-7000高速数据采集解决方案
查看>>
【VMware vSAN 6.6】5.2.运行状况:我们有软硬件项目解决方案
查看>>