如何使用@include
在sass文件中使用Font awesome图标。
例如 - 如果我想使用此图标: http://fortawesome.github.io/Font-Awesome/icon/pencil/
我知道您可以在HTML中使用它:
<i class="fa fa-pencil"></i>
但是我希望能够做到以下或类似的事情:
.class-name {
@include: fa-icon(fa-pencil);
}
执行此操作的默认/正确方法是什么?
答案 0 :(得分:6)
不确定是否有人会发现这有用但我创建了一个扩展.fa
类而不是编辑现有@mixin fa-icon()
Custom Mixin
@mixin icon($icon) {
@include fa-icon;
@extend .fa;
@extend .fa-#{$icon}:before;
}
<强>用法强>
.foo:before {
@include icon(pencil);
}
其中'pencil'是此处引用的图标的名称(减去fa-
):https://fortawesome.github.io/Font-Awesome/icons/
更新Font Awesome 5:
@mixin icon($icon) {
@include fa-icon;
@extend .fas;
@extend .fa-#{$icon};
}
答案 1 :(得分:2)
答案 2 :(得分:0)
我最终解决了这个问题。有几种方法可以做到非常相似:
选项一
通过在其中添加参数来编辑现有的@mixin fa-icon()
,例如它将如下所示:
@mixin fa-icon($icon) {
display: inline-block;
font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transform: translate(0, 0); // ensures no half-pixel rendering in firefox
@extend .fa;
@extend .fa-#{$icon};
}
用法:
.class-name {
@include fa-icon(facebook);
font-size: 50px;
}
选项2:
使用此自定义mixin:http://genesy.me/font-awesome-mixin/
答案 3 :(得分:0)
@import“ path_name / @ fortawesome / fontawesome-free / scss / fontawesome”;
.class-name{
&::before {
@include fa-icon;
font-family: "Font Awesome 5 Free";
content: fa-content($fa-var-pencil);
}
}
在fontawesome.scss中的:mixin @include fa-icon放置所有属性 图标必需的。
在fontawesome的variables.scss中,函数fa-content格式的unquote字体代码为:
在varaibles.scss中,每个图标都具有可变内容,其代码就像铅笔一样
$ fa-var-pencil:\ f040;
只需添加字体系列: 字体家族:“ Font Awesome 5 Free”;要么 字体家族:“ Font Awesome 5 Pro”;要么 字体家族:“ Font Awesome 5 solid”;要么 字体家族:“ Font Awesome 5 Regular”;要么 字体家族:“ Font Awesome 5 light”;要么 字体家族:“ Font Awesome 5品牌”;或
有关所有可用字体的信息,请查看fontawesome的webfonts目录
答案 4 :(得分:0)
从Font Awesome 5.x开始,使用npm软件包(@fortawesome/fontawesome-free)的实现者可以通过利用该发行版中随附的SCSS文件来实现此目标:
/node_modules/@fortawesome/fontawesome-free/scss/
_mixins.scss
:提供具有所需基本样式的fa-icon
混合。_variables.scss
:为每个图标的Unicode字符提供变量(例如$fa-var-stack-overflow
映射到\f16c
)。regular.scss
,solid.scss
等:为每种字体提供@font-face
声明。首先,导入适当的文件:
@import "../node_modules/@fortawesome/fontawesome-free/scss/_mixins.scss";
@import "../node_modules/@fortawesome/fontawesome-free/scss/_variables.scss";
@import "../node_modules/@fortawesome/fontawesome-free/scss/regular.scss";
然后,对于您的实际类,包括fa-icon
mixin,适当的字体系列以及要实现的图标变量:
.selector {
&::before {
@include fa-icon;
font-family : 'Font Awesome 5 Free';
content : fa-content($fa-var-stack-overflow);
}
}
注意:
fa-content()
函数是_variables.scss
的一部分,并将unicode输出包装在引号中。
Regular 和 Solid 的免费版本的字体家族名称相同(“ Font Awesome 5 Free”),因此,如果要混合使用,可能会引起歧义两个字体集中的图标。如果是这样,您可能需要为 Solid 创建自己的字体声明,以消除名称的歧义。