我创建了一个基于LESS的小型mixin,用于输出标准或视网膜格式的图像。我无法理解将变量包装在一些与此相关的CSS网址中 - 当我编译下面的代码时,我最终得到 url('{{3 }}'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;
}
}
有什么想法吗?
答案 0 :(得分:2)
我假设你将@path
作为一个字符串本身传递,例如:
.image('sprite.png');
你可以做以下两件事之一:
.image(~'sprite.png');
这会保留未转义的通话.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]`;