较少css用mixin设置动态背景图像

DMi*_*Min 25 css variables mixins less

我正在使用LESS CSS.

我目前正在使用带有变量的Mixins.

这样的东西可以正常工作:

.border-radius (@radius) { border-radius: @radius; }

#header { .border-radius(4px);  }
Run Code Online (Sandbox Code Playgroud)

不是:

.bg-img(@img) { background-image:url(@img); }

#logo { .bg-img("../images/logo.jpg"); }
Run Code Online (Sandbox Code Playgroud)

我已尝试在background-image中使用'&'的组合:url ('')&("")然后它尝试获取图像images/@img而不是图像名称.否则它会给我一个错误
Cannot call method 'charAt' of undefined

我觉得写作background-image:url()总是太乏味了,这有可能......?

DMi*_*Min 37

:)得到了我的答案!

在我的情况下需要像这样使用:

.bg-img(@img) { background-image:url("@{img}"); }

#logo { .bg-img("../images/logo.jpg"); }
Run Code Online (Sandbox Code Playgroud)


小智 12

您可以通过将图像路径的第一部分添加到初始mixin来进一步改进,因此您只需编写一次:

.bg-img(@img) { background-image:url("../images/@{img}"); }

#logo { .bg-img("logo.jpg"); }
Run Code Online (Sandbox Code Playgroud)

一个小小的改进,但确实增加了一点优雅.