相关疑难解决方法(0)

LESS CSS:重新生成.@ {name}类作为mixin

我正在使用LESS CSS 1.3.3.对不起,如果已经提出这个问题,我在网上找不到任何相关内容.

我有几个看起来像这样的类生成器(示例非常简化,足以触发错误):

#genMarginTop (@name, @size) {
    .@{name} { margin-top: @size; }
}
Run Code Online (Sandbox Code Playgroud)

然后我用它们来生成一些实际的类:

#genMarginTop(mtStandard, 40px);
#genMarginTop(mtHalf, 20px);
Run Code Online (Sandbox Code Playgroud)

到目前为止,很好,LESS正确生成了这些类,我可以在HTML中使用它们.但是,当我想在其他地方重用这样生成的类作为mixin时,我收到一个错误:

.someClass {
    .mtStandard; // won't work, see error below
    // more stuff
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

NameError: .mtStandard is undefined in /.../example.less:161:4
160 .someClass {
161     .mtStandard;
162     // more stuff
Run Code Online (Sandbox Code Playgroud)

当然,我尝试在生成类之后使用mixin .它看起来像 LESS以某种方式在生成它们之后不会在内部注册这些生成的类,但我可能错了.

有没有办法在其他类中重用这些生成的类作为mixins?作为LESS的新手,他们的文档对生成的类相当稀疏,我完全失去了(特别是因为这是mixins似乎接受的唯一语法).

谢谢你读我


注意:我使用这样的类生成器的原因是因为它们比上面的例子复杂得多(想想所有依赖于一组公共参数的嵌套类),并且我将生成的类嵌入到各种@media查询中以支持任何设备类型采用"Zen"方式.最后我得到了类似的东西:

@media (max-width: 1024px) {
    #genSomething(something, somethingParam1, ...);
    #genSomething(somethingElse, somethingElseParam1, ...);
    #genStuff(stuff, stuffParam1, ...);
}
@media (max-width: 240px) { …
Run Code Online (Sandbox Code Playgroud)

css mixins less

7
推荐指数
2
解决办法
1万
查看次数

少:在以前使用font-awesome:之前

我想要一个带有自定义字体,颜色和左侧子弹的标题的CSS选择器.所以我希望我的标题使用我的自定义字体,并且:before使用font-awesome 是伪元素.所以我希望我:before有这个.fa类,而整个元素没有这个类.

我有这个HTML:<h1 class="bulleted-header">Hello</h1>我想在LESS写这样的东西:

.bulleted-header {
    color: #61cbe6;
    font: 16px 'ds_goose', sans-serif;
    &:before {
        content: @fa-var-bullseye; // font-awesome's bullet icon
        .fa; // calling font-awesome's class. DOESN'T COMPILE
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是.fa类在font-awesome LESS源中声明如下:.@{fa-css-prefix} { ... }所以上面的代码不能编译.我试图重用这样的.fa代码:

&:before {
    content: @fa-var-bullseye; // font-awesome's bullet icon
    .@{fa-css-prefix}; // DOESN'T COMPILE
}
Run Code Online (Sandbox Code Playgroud)

和这样:

&:before:extend(.@{fa-css-prefix}) { // compiles but no effect
    content: @fa-var-bullseye; // font-awesome's bullet icon
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以像这样改变我的html <h1 class="bulleted-header"><span class …

html css less pseudo-element font-awesome

6
推荐指数
2
解决办法
1万
查看次数

如何在LESS中通过引用调用mixin?

合乎逻辑的方式是:

.mymixin() {
  sample_key: samplevalue;
}

@avar:  mymixin;
.@{avar}();
Run Code Online (Sandbox Code Playgroud)

但我得到一个解析错误.

有办法吗?

less less-mixins

5
推荐指数
1
解决办法
2294
查看次数

标签 统计

less ×3

css ×2

font-awesome ×1

html ×1

less-mixins ×1

mixins ×1

pseudo-element ×1