使用 Font Awesome 图标作为 CSS 内容

Posted

技术标签:

【中文标题】使用 Font Awesome 图标作为 CSS 内容【英文标题】:Use Font Awesome icon as CSS content 【发布时间】:2014-01-13 23:08:05 【问题描述】:

我想,即,

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

我知道我不能在content 中使用 html 代码,所以只剩下图像了吗?

【问题讨论】:

不能从内存中使用 content 属性将 HTML 注入 DOM。只是普通的旧文本。 【参考方案1】:

FontAwesome 5 更新 感谢Aurelien

您需要根据您尝试呈现的图标类型将font-family 更改为Font Awesome 5 BrandsFont 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;

Demo

您可以阅读下面的其余答案以了解其工作原理并了解图标和文本之间间距的一些解决方法。


FontAwesome 4 及以下

这是错误的使用方式。打开字体真棒样式表,转到您要使用的字体的classfa-phone,复制该类下的内容属性与实体,然后像这样使用它:

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

Demo

只要确保如果您希望定位特定的 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 */

Demo

现在在上面的例子中,图标因为大小不同而微移,你肯定不希望这样,所以你可以在基本声明上设置一个固定的width,比如

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

Demo

【讨论】:

见这里the official list of Unicode character codes in Font Awesome。 font-family: FontAwesome; 也改变了锚标签的字体。我们该如何处理? @Shubh 仔细阅读代码,font-family 应该在 :before 伪而不是锚标签上调用 只是想在这里补充一下,您可以找到特定图标的 unicode 规范,而无需深入研究源代码。只需转到字体真棒网站上的图标列表,然后单击所需的图标。您将在图标示例下方的页面上看到 Unicode 值:fortawesome.github.io/Font-Awesome/icon/pencil-square-o 这里是 Font-awesome 文档页面,向您展示如何使用它。 fontawesome.com/how-to-use/on-the-web/advanced/…【参考方案2】:

另一种无需手动处理 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>

【讨论】:

【参考方案3】:

如果你可以从 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;

【讨论】:

【参考方案4】:
a:before 
     content: "\f055";
     font-family: FontAwesome;
     left:0;
     position:absolute;
     top:0;

示例链接: https://codepen.io/bungeedesign/pen/XqeLQg

从以下位置获取图标代码: https://fontawesome.com/cheatsheet?from=io

【讨论】:

【参考方案5】:

您应该将 font-weight 设置为 900,Font Awesome 5 Free font-family 才能正常工作。

这是有效的:

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

【讨论】:

非常感谢兄弟..真的!【参考方案6】:

您可以在 CSS 中为此使用 unicode。如果您使用的是 font awesome 5,这是语法;

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

您可以查看他们的文档here。

【讨论】:

【参考方案7】:

正如 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。

【讨论】:

【参考方案8】:

使用 SCSS 更新 Font Awesome 5

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

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

【讨论】:

【参考方案9】:

这是我的 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";

【讨论】:

以上是关于使用 Font Awesome 图标作为 CSS 内容的主要内容,如果未能解决你的问题,请参考以下文章

在 CSS 中使用 Font Awesome 图标

如何应用Font Awesome矢量字体图标

如何应用Font Awesome矢量字体图标

Font-Awesome(一套绝佳的图标字体库和CSS框架)

Font Awesome矢量图标使用,主要是完全开源免费

font-awesome图标的显示问题