使用Font Awesome图标作为CSS内容

327

我想将Font Awesome图标用作CSS内容,即:

a:before {
    content: "<i class='fa...'>...</i>";
}

我知道我不能在内容中使用HTML代码,那么只剩下图片了吗?


从内存中,您无法使用内容属性将HTML注入到DOM中。只能使用纯文本。 - Mike Causer
9个回答

758

FontAwesome 5更新 感谢Aurelien

根据您试图渲染的图标类型,需要将font-family更改为Font Awesome 5品牌Font Awesome 5免费版。此外,请不要忘记声明font-weight: 900;

a:before {
   font-family: "Font Awesome 5 Free";
   content: "\f095";
   display: inline-block;
   padding-right: 3px;
   vertical-align: middle;
   font-weight: 900;
}

演示

您可以在下面继续阅读,以了解其工作原理并了解一些在图标和文本之间添加空格的解决方法。


FontAwesome 4及以下版本

那是错误的使用方式。打开Font Awesome样式表,进入您想要使用的字体的class,例如fa-phone,将实体下的内容属性复制,并像下面这样使用:

a:before {
    font-family: FontAwesome;
    content: "\f095";
}

演示

如果你想要针对一个特定的 a 标签进行选择,请考虑使用 class 使其更为具体,例如:

a.class_name:before {
    font-family: FontAwesome;
    content: "\f095";
}

使用上述方法会将图标与您的其余文本粘在一起,因此如果您希望它们之间有一点空间,则可以使用display: inline-block;并使用一些padding-right

使用上述方式将使图标和剩余文本粘在一起,如果需要两者之间留出一定的空间,可以使用 display: inline-block; 并设置一些 padding-right
a:before {
    font-family: FontAwesome;
    content: "\f095";
    display: inline-block;
    padding-right: 3px;
    vertical-align: middle;
}

进一步扩展这个答案,因为许多人可能需要在鼠标悬停时更改图标,所以我们可以编写一个单独的选择器和规则来处理 :hover 动作:


a:hover:before {
    content: "\f099"; /* Code of the icon you want to change on hover */
}

演示

在上面的例子中,图标因为大小不同而被推出位置,你肯定不想要这样,所以你可以在基础声明中设置固定的宽度(width)

a:before {
    /* Other properties here, look in the above code snippets */
    width: 12px; /* add some desired width here to prevent nudge */
}

演示


78
请点击此处查看 Font Awesome 官方 Unicode 字符代码列表。 - Boaz
使用 font-family: FontAwesome; 会同时改变锚点标签的字体,我们该如何处理? - Shubh
1
@Shubh 请仔细阅读代码,font-family 应该在 :before 伪元素上调用,而不是锚点标签。 - Mr. Alien
我想在这里补充一下,您可以找到特定图标的Unicode规范,而无需深入挖掘源代码。只需转到Font Awesome网站上的图标列表,然后单击所需的图标。您将在页面底部看到该Unicode值,就在图标示例下面: http://fortawesome.github.io/Font-Awesome/icon/pencil-square-o/ - Allen Underwood
1
这是Font-awesome文档页面,向您展示如何使用它。https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements - whisk
显示剩余7条评论

26

如果你不想手动操作Unicode字符,还有另一种解决方案可以在Making Font Awesome awesome - Using icons without i-tags中找到(免责声明:我撰写了这篇文章)。

简言之,你可以像这样创建一个新类:

.icon::before {
    display: inline-block;
    margin-right: .5em;
    font: normal normal normal 14px/1 FontAwesome;
    font-size: inherit;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    transform: translate(0, 0);
}

然后可以与任何图标一起使用,例如:

<a class="icon fa-car" href="#">This is a link</a>

24

如果您可以访问font-awesome的SCSS文件,则可以使用此简单解决方案:

.a:after {
    // Import mixin from font-awesome/scss/mixins.scss
    @include fa-icon();

    // Use icon variable from font-awesome/scss/variables.scss
    content: $fa-var-exclamation-triangle;
}

14

在使用Font Awesome 5 Free字体时,应将字重设置为900。

这是可行的:

.css-selector::before {
   font-family: 'Font Awesome 5 Free';
   content: "\f101";
   font-weight: 900;
}

非常感谢你,兄弟! - Sanmeet

9

4

您可以在CSS中使用Unicode实现此功能。如果使用的是Font Awesome 5,则语法如下:

.login::before {
    font-family: "Font Awesome 5 Free"; 
    font-weight: 900; 
    content: "\f007";  
}

您可以在此处查看它们的文档:这里

1
正如FontAwesome网站FontAwesome所述 =>
HTML:
<span class="icon login"></span> Login</li>

CSS:

 .icon::before {
    display: inline-block;
    font-style: normal;
    font-variant: normal;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
  }

    .login::before {
        font-family: "Font Awesome 5 Free";
        font-weight: 900;
        content: "\f007";
   }

.login::before 中 -> 编辑 content:''; 以适应您的 Unicode。

1

使用SCSS更新Font Awesome 5

.icon {
  @extend %fa-icon;
  @extend .fas;

  &:before {
    content: fa-content($fa-var-user);
  }
}

0
这是我的 webpack 4 + font awesome 5 解决方案:
webpack 插件:
new CopyWebpackPlugin([
    { from: 'node_modules/font-awesome/fonts', to: 'font-awesome' }
  ]),

全局 CSS 样式:

@font-face {
    font-family: 'FontAwesome';
    src: url('/font-awesome/fontawesome-webfont.eot');
    src: url('/font-awesome/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
    url('/font-awesome/fontawesome-webfont.woff2') format('woff2'),
    url('/font-awesome/fontawesome-webfont.woff') format('woff'),
    url('/font-awesome/fontawesome-webfont.ttf') format('truetype'),
    url('/font-awesome/fontawesome-webfont.svgfontawesomeregular') format('svg');
    font-weight: normal;
    font-style: normal;
}

i {
    font-family: "FontAwesome";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接