gpt4 book ai didi

javascript - 如何使字符串指向 Less 中的变量?

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:41 26 4
gpt4 key购买 nike

我扩展了默认的 less 函数以支持一些基本列表。我添加了一个函数“nth”,如下所示:

"nth": function(obj, index){
var list = obj.value.split(",");
var n = index.value;
obj.value = list[n-1].trim();
return new tree.Anonymous(obj);
}

然后我添加了另一个函数“convertstrtovar”,如下所示:

convertstrtovar: function(obj){
var str = obj.value.toString();
str = str.replace(/(@)/gi, '');
str = '~"@{' + str + '}"';
obj.value = str;
return new tree.Anonymous(obj);
}

这会接收像 '@white' 这样的字符串并将其转换为 ~"@{white}"。下面给出了 less mixin 的示例代码。

@button-text-colors: "@white, @dark, @red"; //parsed as a comma separated list.
@white: white;
@dark: black;
@red: red;

.something(@color){
color: @color;
}

.some{
@t: convertstrtovar(nth(@button-text-colors, 1));
.something(@t);
}

这给我的输出如下:

.some {
color: ~"@{white}";
}

为什么 ~"@{white}"被打印为字符串而不被评估为变量 white 而通常 ~"@{white}"在 less 中获取存储在 @white 中的值?

最佳答案

Why is ~"@{white}" being printed out as string and not evaluated as variable white when usually ~"@{white}"

因为 LESS 在解析输入时会评估这些东西(但您的函数会在那之后创建一个新的字符串对象)。

实际上,您只需使用默认的 LESS 语言结构即可实现您想要的(无需任何自定义函数 hack):

@button-text-colors: 'white', 'dark', 'red';
@white: white;
@dark: black;
@red: red;

.something(@color){
color: @color;
}

.some{
@t: extract(@button-text-colors, 1);
.something(@@t);
}

不,说真的,我建议你在尝试用你自己的自定义函数扩展它之前考虑更多地了解现有的 LESS 特性......(虽然我必须承认过时的 LESS 文档是一个重要的问题 - 好吧,在至少看看 https://github.com/SomMeri/less4j/wiki/_pages - 这是目前最详细的 LESS 文档)。

关于javascript - 如何使字符串指向 Less 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19419596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com