使用Font Awesome图标作为CSS内容


278

我想使用Font Awesome图标作为CSS内容,即

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

我知道我无法在中使用HTML代码content,所以只剩下图像了吗?


从内存中,您无法使用content属性将HTML注入DOM。只是普通的旧文本。
Mike Causer 2013年

Answers:


633

FontAwesome 5的更新 感谢Aurelien

您需要根据要渲染的图标类型将更font-family改为Font Awesome 5 BrandsOR Font Awesome 5 Free。另外,不要忘记声明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以下

那是使用它的错误方法。打开字体超酷的样式表,转到class您要使用的字体,说fa-phone,复制带有实体的该类下的content属性,然后像这样使用它:

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

演示版

只要确保您要定位到特定a标签即可,然后考虑使用a class使其更具体,例如:

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

使用上面的方法会将图标与您剩余的文本粘贴在一起,因此,如果您希望在两者之间留出一些空间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 */
}

演示版



使用font-family: FontAwesome;它也可以更改锚标记的字体。我们该如何处理?
Shubh 2015年

@Shubh仔细阅读代码,font-family是假设在被称为:before伪,而不是定位标记
外国人先生

只是以为我会在这里添加,您可以找到特定图标的unicode规范,而不必深入了解源代码。只需转到真棒字体网站上的图标列表,然后单击所需的图标即可。您将在图标示例下面的页面上看到Unicode值:fortawesome.github.io/Font-Awesome/icon/pencil-square-o
Allen Underwood

此FontAwesome的CSS Unicode列表更好:astronautweb.co/snippet/font-awesome,因为它显示了content直接复制的正确代码(即,无需理会)。PS:我仍然想知道为什么FontAwesome伙计们没有在每个图标页面上放置内容代码?
Kai Noack

25

另一种解决方案,您无需手动弄乱Unicode字符,可以在“ 使字体真棒” –使用没有i-tag的图标中找到(免责声明:我写了这篇文章)。

简而言之,您可以创建一个新的类,如下所示:

.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>

23

如果您可以通过超棒的字体访问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;
}


3

您可以在CSS中为此使用unicode。如果您使用的字体真棒5,这是语法。

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

您可以在此处查看其文档。


3

您必须将Font-weight设置为900,Font Awesome 5 Free字体家族才能正常工作。

这是工作中的一个:

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

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 +真棒字体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";
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.