在CSS中使用真棒字体图标


304

我有一些看起来像这样的CSS:

#content h2 {
   background: url(../images/tContent.jpg) no-repeat 0 6px;
}

我想用Font Awesome中的图标替换图像。

无论如何,我看不到将CSS中的图标用作背景图片。假设在我的CSS之前加载了Font Awesome样式表/字体,是否可以这样做?


字体的字形不能用作背景。但是,
SVG

@cimmanon您介意解释如何将其应用于真棒字体
BonsaiOak 2014年

@BonsaiOak所选答案尚未解释的解释是什么?如果您有一个无法解决的问题(或SO上的任何其他问题),请提出一个新问题。
cimmanon 2014年

@cimmanon对不起,您不清楚。您似乎暗示可以使用font-awesome.svg字体文件中的图标作为背景。但是,您从未明确地说过,所以我不确定。
BonsaiOak 2014年

1
@BonsaiOak是的,您可以将SVG用作背景图像,就像使用其他任何图像一样。但是,我实际上没有查看FontAwesome SVG来验证它是否可以这种方式使用。
cimmanon 2014年

Answers:


489

您不能将文本用作背景图像,但是可以使用:before:after伪类将文本字符放置在所需的位置,而不必添加各种杂乱的额外标记。

确保position:relative在您的实际文本包装器上进行设置,以便定位。

.mytextwithicon {
    position:relative;
}    
.mytextwithicon:before {
    content: "\25AE";  /* this is your text. You can also use UTF-8 character codes as I do here */
    font-family: FontAwesome;
    left:-5px;
    position:absolute;
    top:0;
 }

编辑:

Font Awesome v5使用的字体名称不同于旧版本:

  • 对于FontAwesome v5,免费版,请使用: font-family: "Font Awesome 5 Free"
  • 对于FontAwesome v5专业版,请使用: font-family: "Font Awesome 5 Pro"

请注意,您也应该设置相同的font-weight属性(似乎是900)。

查找字体名称的另一种方法是右键单击页面上的示例字体超赞图标并获取字体名称(可以找到utf-8图标代码,但请注意,您可以在上找到它:before)。


63
每个图标的等效文本都在那里fortawesome.github.io/Font-Awesome/cheatsheet
Matthieu

61
您必须从开头删除&#x和; 从头开始。字体家族的名称是FontAwesome
Matthieu

5
@David,只是文本,使用font-size
JCM 2015年

6
for FontAwesome v5,您需要使用 .backspace:before { font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f55a"; }
Digvijayad

5
请注意,这似乎不适用于Input元素(如提交按钮),因为它们似乎不支持:before或:after。
米尔

70

除了上面来自Diodeus的答案之外,您还需要font-family: FontAwesome规则(假设您@font-face已经在CSS中声明了FontAwesome 的规则)。然后就是知道哪个CSS内容值对应于哪个图标。

我在这里列出了所有内容:http : //astronautweb.co/snippet/font-awesome/


1
我卸任后工作:绝对 在.element:before中,现在我可以用超棒的字体图标装饰链接,但保留链接的自定义字体
jethroo 2013年

内容价值的好清单!
安东尼

1
如@staabm的回答所述,FontAwesome维护着每个字形的正式代码清单:fontawesome.io/cheatsheet
alxndr 2014年


22

整合以上所有内容,以下是最后一课,效果很好

   .faArrowIcon {
        position:relative;
    }

    .faArrowIcon:before {
        font-family: FontAwesome;
        top:0;
        left:-5px;
        padding-right:10px;
        content: "\f0a9"; 
    }

最佳答案,因为您可以从带有图标的所需文本之前删除之前的<i>标记,然后替换为该标记。并给出了相同的空间。
andygoestohollywood

7

您可以尝试这个示例类。并在此处找到图标内容:http : //astronautweb.co/snippet/font-awesome/

  #content h2:before {
    display: inline-block;
    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);
    content: "\f007";
    }

6

要使用CSS使用真棒字体,请按照以下步骤操作-

第1步-在CSS中添加FontAwesome的字体

/*Font Awesome Fonts*/
@font-face {
    font-family: 'FontAwesome';
    //in url add your folder path of FontAwsome Fonts
    src: url('font-awesome/fontawesome-webfont.ttf') format('truetype');
}

步骤-2在CSS下面使用CSS将字体应用于HTML的类元素

.sorting_asc:after {
    content: "\f0de"; /* this is your text. You can also use UTF-8 character codes as I do here */
    font-family: FontAwesome;
    padding-left: 10px !important;
    vertical-align: middle;
}

最后,使用“ sorting_asc ”类将css应用于所需的HTML标签/元素。


2

无需将内容嵌入CSS。您可以将徽标内容放入fa元素中,然后调整徽标css。http://jsfiddle.net/vmjwayrk/2/

<i class="fa fa-envelope fa-5x" style="position:relative;color:grey;">
  <span style="
        background-color: navy;
        border-radius: 50%;
        font-size: .25em;
        display:block;
        position:absolute;
        text-align: center;
        line-height: 2em;
        top: -.5em;
        right: -.5em;
        width: 2em;
        height: 2em;
        border:solid 4px #fff;
        box-shadow:0px 0px 1px #000;
        color: #fff;
    ">17</span>
</i>

8
“无需将内容嵌入CSS”。好吧,在某些情况下是需要的。
斯特凡·布鲁克

2
如果您不在乎渐进增强,那很好,但是您应该尽可能地将样式保留在css文件中。
亚当·卡尔

2

或者,如果使用Sass,则可以“扩展” FA图标来显示它们:

.mytextwithicon:before {
  @extend .fas, .fa-angle-double-right;

  @extend .mr-2; // using bootstrap to add a small gap
                 // between the icon and the text.
}


0

为此,您只需要在适当的地方通过:before或:after 将content属性和font-family属性添加到所需元素即可。

例如:我想在帖子中所有元素附加附件图标a。因此,首先,我需要搜索此类字体是否存在。就像我在这里找到它的情况,即fa fa-paperclip。然后,我将右键单击那里的图标,然后进入::before伪属性以获取content它正在使用的标签,在我的情况下,我发现是\f0c6。然后,我将在CSS中使用它,如下所示:

   .post a:after {
     font-family: FontAwesome,
     content: " \f0c6" /* I added a space before \ for better UI */
    }

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.