css - SASS 字符串到“非字符串”
问题描述
我有一个场景,我使用 JSON 文件来动态创建 SASS 变量。该插件(Gulp-json-css)可以保留地图和数组属性,但不会在地图键上添加引号:
$palettes : ( white: #ffffff, grey: (lite: #aaaaaa, base: #999999, dark: #666666), black: #000000);
我遇到了一个问题,map-get()
如果将带引号的字符串用于参数,则无法找到适当的值。
map-get($palettes, white) => #ffffff
map-get($palettes, "white") => null
--
Conclusion : (white != "white")
无论如何将带引号的字符串更改为“未引用”字符串?我知道你在想什么,但unquote()
也不起作用:
$color : "white";
white == unquote($color) => false
我需要一种方法来"white"
转换white
,以便使用该map-get()
函数适当地检索正确的值。
更新/解决方案
对于遇到此页面并正在寻找解决方案的人,我最终编写了一个函数,该函数将遍历地图并为其键添加引号:
@function quoteMapKeys( $map )
{
$newMap : ();
@each $key,$value in $map
{
@if type-of($value) == 'map'
{
$value : quoteMapKeys( $value );
}
$newMap : map-merge($newMap, (quote($key):$value));
}
@return $newMap;
}
$palettes : quoteMapKeys( $palettes );
解决方案
推荐阅读
- python - 为备用 python 环境安装 dlib
- docker - Docker -it 命令与 Docker 镜像或 Docker 容器相关
- c - 创建一个字符串计数器 - 发生分段错误,我不确定为什么
- c++ - 静态区分 C++ 中的枚举和枚举类?
- scala - 生成包含问题 ID(作为列)和答案(作为它们的值)的考试评估报告的代码
- javascript - jQuery 隐藏仅在切换全屏时有效
- python - 如何根据范围生成列值
- android - Android ConstraintLayout TextView 不包装在 chain_style 包装的水平
- powershell - 无法在 PowerShell 5.1 中使用客户端证书身份验证
- swift - 枚举中的静态属性