相关疑难解决方法(0)

在LESS中使用属性名称中的变量(动态属性/属性名称插值)

我注意到用SASS编写的inuit.css有一个.vendor混合:

@mixin vendor($property, $value...){
    -webkit-#{$property}:$value;
       -moz-#{$property}:$value;
        -ms-#{$property}:$value;
         -o-#{$property}:$value;
            #{$property}:$value;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在LESS中复制一些奇怪的功能,如e()和@ {}?

css less vendor-prefix

29
推荐指数
1
解决办法
8135
查看次数

LESS mixin一个变量类名

我正在使用Font Awesome 4.0.0,并希望在LESS中执行类似的操作:

.btn-github {
  .btn;
  .btn-primary;
  margin-left: 3em;

  i {
    .@{fa-css-prefix};
    .@{fa-css-prefix}-github;
    .@{fa-css-prefix}-lg;
    margin-right: 1em;
  }
}
Run Code Online (Sandbox Code Playgroud)

这不会编译错误:

ParseError: Unrecognised input in - on line ...

有可能做到这一点吗?它肯定会为我做一个漂亮的按钮.

css less twitter-bootstrap font-awesome

23
推荐指数
1
解决办法
3万
查看次数

较少CSS传递mixin作为另一个mixin的参数

有没有办法将一个mixin或style的声明传递给另一个mixin作为输入参数?

我们来看一个动画关键帧的例子.以下是我们如何在纯CSS中定义关键帧:

@-moz-keyframes some-name
{
    from { color: red; }
    to { color: blue; }
}

@-webkit-keyframes some-name
{
    from { color: red; }
    to { color: blue; }
}

@keyframes some-name
{
    from { color: red; }
    to { color: blue; }
}
Run Code Online (Sandbox Code Playgroud)

想法是使用mixins简化这些声明,所以我们可以有如下内容:

.keyframes(name, from, to)
{
    // here we need somehow to reproduce structure
    // that we have in an example above
}

// define one animation
.my-from() { color: red; }
.my-to() { color: blue; } …
Run Code Online (Sandbox Code Playgroud)

css arguments mixins less css-animations

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

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万
查看次数