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

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

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

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

【问题讨论】:

  • 不能从内存中使用 content 属性将 HTML 注入 DOM。只是普通的旧文本。

标签: html css font-awesome


【解决方案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

【讨论】:

【解决方案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";
              }
              

              【讨论】:

                猜你喜欢
                • 2018-11-11
                • 2013-08-11
                • 2013-01-22
                • 2017-07-13
                • 2023-03-09
                • 1970-01-01
                • 2019-11-14
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多