gpt4 book ai didi

css - LESS 混入一个变量类名

转载 作者:技术小花猫 更新时间:2023-10-29 10:10:53 25 4
gpt4 key购买 nike

我正在使用 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;
}
}

没有编译错误:

ParseError:无法识别的输入 - 在线 ...

这有可能实现吗?它肯定会成为我的漂亮按钮。

最佳答案

您尝试执行的操作至少存在 2 个问题(对于 LESS >=1.6,请参阅下面的更新):

1) 很遗憾,无法使用选择器调用混入 插值。

对于选择器插值,LESS 期望构造是 以下格式:

.@{selector-string} { property:value; }

(内插选择器也可以有一些静态字符串前置或 发布插值)

所以

.@{selector-string};

未被 LESS 编译器识别。在这里查看更多: How can I call a mixin by reference in LESS?

2) 带有内插选择器的规则集被直接打印到 CSS 输出,并且不作为可以在 LESS 运行中重用的混合存在

例如:

@foo: test;

.@{foo} {
length: 20px;
}

.bar {
.test;
}

将返回:

    Name error: .test is undefined
.bar { .test;}

在此处查看更多相关信息:LESS CSS: Reuse generated .@{name} class as a mixin

您的问题的可能解决方案是将 Font Awesome 规则重新定义为某种可重用的混合(不使用插值)。像这样:

@fa-var-github: "\f09b";

.fa-mixin() {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-mixin-lg() {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.fa-mixin-icon(@icon){
@var: "fa-var-@{icon}";
&:before { content: @@var; }
}
i {
.fa-mixin;
.fa-mixin-lg;
.fa-mixin-icon(github);
}

如果您真的不需要变量而只想包含规则,最好的方法就是导入已编译的 CSS 版本的 FontAwesome(参见答案 here):

@import (less) 'font-awesome.css';

然后您可以只使用像 LESS mixins 这样的 CSS 规则,或者按照您认为合适的方式扩展它们的选择器,它应该可以完美地工作。


更新:

LESS >= 1.6 开始,带有内插选择器的规则可以作为 mixin 访问...因此上面的 #2 限制形式不再适用(但您仍然不能动态调用 mixin插值)。因此,您可以简单地从导入的 font-awesome.less 文件中调用 LESS mixins 和变量,如下所示:

i {
.fa;
.fa-lg;
&:before{
content: @fa-var-github;
}
}

关于css - LESS 混入一个变量类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com