1

我创建了一个基于 LESS 的小型 mixin,用于以标准或视网膜格式输出图像。我无法理解在与此相关的一些 CSS url 中包装变量 - 当我编译下面的代码时,我最终得到url(' http://sample.com/images/ 'sprite@2x. .png'') . 两个背景属性似乎都需要用引号括起来,以便编译器获取变量。虽然这可行,但当我尝试为高 ppi 场景设置背景属性时,我最终会在文件名周围加上这些额外的单引号。

.image(@path, @w: auto, @h: auto) {
    background-image: url('@{base-url}/images/@{path}');
    @path_2x: ~`"@{path}".split('.').slice(0, "@{path}".split('.').length - 1).join(".") + "@2x" + "." + "@{path}".split('.')["@{path}".split('.').length - 1]`;

    @media all and (-webkit-min-device-pixel-ratio : 1.5) {
        background-image: url('@{base-url}/images/@{path_2x}');
        background-size: @w @h;
    }
}

有任何想法吗?

4

1 回答 1

2

我假设您将@path作为字符串本身传递,例如:

.image('sprite.png');

您可以执行以下两项操作之一:

1)在通话时转义(不太友好)

.image(~'sprite.png');

2)修改javascript不添加额外的引号(用户友好)

这保留了未转义的 call .image('sprite.png');,但请注意,我已将您更改"@{path}"为 只是@{path}因为路径已经作为字符串传递,因此@{path}已经解析为字符串并且能够进行字符串操作。通过添加引号,您实际上是在创建路径,'sprite.png'然后"'sprite.png'"留下额外的引号。

@path_2x: ~`@{path}.split('.').slice(0, "@{path}".split('.').length - 1).join(".") + "@2x" + "." + @{path}.split('.')[@{path}.split('.').length - 1]`;
于 2013-06-12T15:32:05.107 回答