使用字体Awesome图标作为CSS内容

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

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

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

670694 次浏览

为FontAwesome更新 感谢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及以下

这是错误的使用方法。打开字体awesome样式表,找到你想要使用的字体的class,例如fa-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

在上面的例子中,图标会因为大小不同而移动,而你肯定不希望那样,所以你可以在base声明中设置一个固定的width

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

Demo

另一个不需要手动处理Unicode字符的解决方案可以在< a href = " http://dusted。代码/ Making - Font - Awesome - Awesome - Using -icons-without-i-tags" rel="noreferrer">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>

如果你可以通过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;
}
a:before {
content: "\f055";
font-family: FontAwesome;
left:0;
position:absolute;
top:0;
}
< p >示例链接: https://codepen.io/bungeedesign/pen/XqeLQg < / p >

获取图标代码 https://fontawesome.com/cheatsheet?from=io < / p >

你可以在CSS中使用unicode。如果你使用字体awesome 5,这是语法;

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

你可以看到他们的文档在这里

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

你应该将font-weight设置为900,以便字体Awesome 5免费 font-family能够工作。

这是工作中的一个:

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

更新字体Awesome 5使用SCSS

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


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

下面是我的webpack 4 +字体很棒的解决方案:

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";
}