如何基于未知数量的输入参数,在LESS中列出CSS规则?

如何基于未知数量的输入参数,在LESS中列出CSS规则?,less,Less,我想为翻译这样的图像做一个较少的混合: .translate('/images/image.png', de, en-uk); 其输出如下所示: background-image: url('/images/image.png'); &:lang(de){ background-image: url('/images/image_de.png') } &:lang(en-uk){ background-image: url('/images/image_en-uk.png')

我想为翻译这样的图像做一个较少的混合:

.translate('/images/image.png', de, en-uk);
其输出如下所示:

background-image: url('/images/image.png');
&:lang(de){ background-image: url('/images/image_de.png') }
&:lang(en-uk){ background-image: url('/images/image_en-uk.png') }
如果我们总是翻译相同数量的语言,这将很容易,但不幸的是我们不是(在某些地区,内容是相同的)。我不确定如何使这个数字变为变量(这将是未来的解决方案)

我想我要寻找的是一种方法,在我传递的数组中循环每个元素,并为每个元素返回另一个较少的规则

有什么想法吗?

请参阅。例如,它的实现有点像:

.test{
.translate('/images/image.png',grc,lat,san);
}
.翻译(@image,@langs…){
背景图像:@图像;
.-(长度(@langs));
.-(@i)当(@i>0){
.-(@i-1));
@朗:摘录(@langs,@i);
&:lang(@{lang}){
背景图像:替换(@image、“\.”、“{lang}”);
}
}
}
函数需要较少的1.7.0版本,但对于早期版本,可以使用纯字符串或@helderdarocha answer中的字符串

(还要注意,上面的
@langs…
mixin参数也可以接受语言列表作为单个变量),例如:

@语言:de、fr、es、ru、en-uk;//事实上,这里的逗号也是可选的
.测试{
.translate('/images/image.png',@语言);
}

为了以防万一,同样的mixin使用了wrapper(只是为了表明更少的循环不必那么可怕:):

@import“for”;
.翻译(@image,@langs…){
背景图像:@图像;
.对于(@langs);-每个(@lang){
&:lang(@{lang}){
背景图像:替换(@image、“\.”、“{lang}”);
}
}
}
请参阅。例如,它的实现有点像:

.test{
.translate('/images/image.png',grc,lat,san);
}
.翻译(@image,@langs…){
背景图像:@图像;
.-(长度(@langs));
.-(@i)当(@i>0){
.-(@i-1));
@朗:摘录(@langs,@i);
&:lang(@{lang}){
背景图像:替换(@image、“\.”、“{lang}”);
}
}
}
函数需要较少的1.7.0版本,但对于早期版本,可以使用纯字符串或@helderdarocha answer中的字符串

(还要注意,上面的
@langs…
mixin参数也可以接受语言列表作为单个变量),例如:

@语言:de、fr、es、ru、en-uk;//事实上,这里的逗号也是可选的
.测试{
.translate('/images/image.png',@语言);
}

为了以防万一,同样的mixin使用了wrapper(只是为了表明更少的循环不必那么可怕:):

@import“for”;
.翻译(@image,@langs…){
背景图像:@图像;
.对于(@langs);-每个(@lang){
&:lang(@{lang}){
背景图像:替换(@image、“\.”、“{lang}”);
}
}
}

此mixin使用变量中的目标语言。它将循环遍历它们,并为每一个生成所需的代码:

.image替换(@languages;@image前缀){
@计数:长度(@语言);
.loop(@count;@image前缀);
.loop(@count;@image前缀)时(@count>0){
.loop(@count-1;@image前缀);
@lang:extract(@languages,@count);
@图像:%('%a_%a.png',@image前缀,@lang);
&:lang(@{lang}){
背景图片:url(@image);
}
}
}
要使用它:

@语言:~'de',~'fr',~'es',~'ru',~'en-UK',~'pt-BR';
.科{
.image替换(@languages;~'/images/image');
}
结果:

.section:lang(de){
背景图片:url('/images/image_de.png');
}
。组别:朗(fr){
背景图片:url('/images/image_fr.png');
}
.组别:朗{
背景图片:url('/images/image_es.png');
}
。组别:朗(ru){
背景图片:url('/images/image_ru.png');
}
.组别:朗(英国){
背景图片:url('/images/image_en-UK.png');
}

此mixin使用变量中的目标语言。它将循环遍历它们,并为每一个生成所需的代码:

.image替换(@languages;@image前缀){
@计数:长度(@语言);
.loop(@count;@image前缀);
.loop(@count;@image前缀)时(@count>0){
.loop(@count-1;@image前缀);
@lang:extract(@languages,@count);
@图像:%('%a_%a.png',@image前缀,@lang);
&:lang(@{lang}){
背景图片:url(@image);
}
}
}
要使用它:

@语言:~'de',~'fr',~'es',~'ru',~'en-UK',~'pt-BR';
.科{
.image替换(@languages;~'/images/image');
}
结果:

.section:lang(de){
背景图片:url('/images/image_de.png');
}
。组别:朗(fr){
背景图片:url('/images/image_fr.png');
}
.组别:朗{
背景图片:url('/images/image_es.png');
}
。组别:朗(ru){
背景图片:url('/images/image_ru.png');
}
.组别:朗(英国){
背景图片:url('/images/image_en-UK.png');
}

您希望有一种源语言和一种或多种目标语言?类似于
.translate(@image;@fromLang;@targetLangs…)。translate()可能是mixin的错误名称,它只是替换图像的文件名(_target1,_target2)。假设没有语言后缀的图片是源语言。您希望有一种源语言和一种或多种目标语言?类似于
.translate(@image;@fromLang;@targetLangs…)
,其中最后一个参数可能有许多?Hi@helderdarocha-只有一种源语言。translate()可能是mixin的错误名称,它只是替换图像的文件名(_target1,_target2)。假设没有语言后缀的图片是源语言。嗨,谢谢你的回答。我不知道该如何理解这一行:
.translate(5;~'/images/image'