Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 较少列表作为mixin参数_Css_Less - Fatal编程技术网

Css 较少列表作为mixin参数

Css 较少列表作为mixin参数,css,less,Css,Less,假设我有这个混音器: .loop-strings("A, B, C", "1, 2, 3", "X, Y, Z";); 这样实施: .loop-strings(@list, @index: 1) when (isstring(extract(@list, @index))) { @currentMember: extract(@list, @index); .do-something-with(@currentMember); .loop-strings(@list

假设我有这个混音器:

.loop-strings("A, B, C", "1, 2, 3", "X, Y, Z";);
这样实施:

.loop-strings(@list, @index: 1) when (isstring(extract(@list, @index))) {
    @currentMember: extract(@list, @index);

    .do-something-with(@currentMember);

    .loop-strings(@list, (@index + 1)); /* loop the next member */
}

.do-something-with(...) {
    @args1 : e(@arguments); 
    @args2 : A, B, C;
    args1: @args1;
    args2: @args2;
    extract-args1-2: extract(@args1, 2);
    extract-args2-2: extract(@args2, 2);
}
结果是:

args1: A, B, C;
extract-args1-2: extract(A, B, C, 2);
args1: 1, 2, 3;
extract-args1-2: extract(1, 2, 3, 2);
args1: X, Y, Z;
args2: A, B, C;
extract-args1-2: extract(X, Y, Z, 2);
extract-args2-2: B;
这些接缝是
@foo:e(“a,B,C”)之间的差异
@foo:~“A,B,C”
@foo:A,B,C

我似乎不能使用
extract(@foo,2)除非定义为对象列表

有没有办法将eScaped字符串转换为对象列表

这可能是
e(“a,B,C”)
~“a,B,C”
a,B,C

是的,无论是
e(“A,B,C”)
还是
~“A,B,C”
都创建了所谓的“匿名值”类型,而这种类型从未被视为有意义的类型(它不是列表,不是数字,甚至不是字符串)。基本上,转义值只是类似于“不要碰我”或“我知道我在做什么!”之类的东西,它们只是“按原样”输出,编译器从不试图理解其中的内容。这基本上就是“打印”的目的:“打印”出编译器无法理解的内容

一般来说,可以使用逗号和空格作为列表中的值分隔符。例如,您可以使用
.loop字符串(abc,123xyz;)(二维列表作为单个参数,因此使用多参数mixin,您甚至可以在一行中获得一个树维列表)。是否有任何特殊原因需要使用引号和/或转义值?例如,您可以将其编写为:

test {
    .loop-lists(A, B, C; 1, 2, 3; X, Y, Z);
}

.loop-lists(@lists...) {
    .loop(length(@lists));
    .loop(@i) when (@i > 0) {
        .loop((@i - 1));
        .do-something-with(extract(@lists, @i));
    }
}

.do-something-with(@list) {
    v1: extract(@list, 1);
    v2: extract(@list, 2);
    v3: extract(@list, 3);
}
--- 提取物(A、B、C、2)

目前这是不正确的
extract
语法,
extract
只接受两个参数,因此您可以将其写成:

extract(A B C, 2);
或作为:

@list: A, B, C;
extract(@list, 2);
--- 下面是一个带有两个附加通用提示的示例:

test {
    .do-something(A B C, 1 2 3, X Y Z; foo bar, baz; banana);
}

.do-something(@p1, @p2, @p3) {
    args1: @arguments;                                     // 3D list
    args2: extract(@arguments, 1);                         // 2D list: A B C, 1 2 3, X Y Z
    args3: extract(extract(@arguments, 1), 1);             // 1D list: A B C
    args4: extract(extract(extract(@arguments, 1), 1), 1); // single value: A

    p1- :   @p1;               // A B C, 1 2 3, X Y Z
    p1-1:   extract(@p1, 1);   // A B C
    p1-3:   extract(@p1, 3);   // X Y Z

   @p2-1:   extract(@p2, 1);   // foo bar
    p2-1:   @p2-1;             // foo bar
    p2-1-2: extract(@p2-1, 2); // bar
    p2-2:   extract(@p2, 2);   // baz

    p3- :   @p3;               // banana
    p3-1:   extract(@p3, 1);   // banana
    // etc.

    quoted-p2: "@{p2}"; // if you need a quoted string do it in reverse (i.e. non-quoted list to a quoted string)
}

咀嚼!我不知道空格分隔符。回答得很好。