Я хочу использовать значок Font Awesome в качестве содержимого CSS, т.е.
a:before {
content: "<i class='fa...'>...</i>";
}
Я знаю, что не могу использовать HTML-код content
, так что остались только изображения?
Я хочу использовать значок Font Awesome в качестве содержимого CSS, т.е.
a:before {
content: "<i class='fa...'>...</i>";
}
Я знаю, что не могу использовать HTML-код content
, так что остались только изображения?
Ответы:
Обновление для FontAwesome 5 Благодаря Aurelien
Вам нужно изменить font-family
на Font Awesome 5 Brands
OR 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
, скопируйте свойство содержимого этого класса вместе с сущностью и используйте его следующим образом:
a:before {
font-family: FontAwesome;
content: "\f095";
}
Просто убедитесь, что, если вы ищете целевой 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;
его помощью также изменяется шрифт для тегов привязки. Как мы можем справиться с этим?
font-family
предполагается , что он вызывается на :before
псевдо-теге, а не на привязанном теге
content
коды для прямого копирования (то есть, простую задачу). PS: я до сих пор удивляюсь, почему ребята из FontAwesome не размещают коды контента на каждой странице значков ?!
Другое решение без необходимости вручную возиться с символами Unicode можно найти в статье « Создание шрифта Awesome awesome» - использование значков без i-тегов ( отказ от ответственности: я написал эту статью ).
В двух словах, вы можете создать новый класс, например:
.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>
Если у вас есть доступ к файлам SCSS из font-awesome, вы можете использовать это простое решение:
.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;
}
Пример ссылки: https://codepen.io/bungeedesign/pen/XqeLQg
Получить код значка с: https://fontawesome.com/cheatsheet?from=io
Для работы Font Awesome 5 Free font-family у вас должно быть установлено значение font-weight - 900 .
Это рабочий:
.css-selector::before {
font-family: 'Font Awesome 5 Free';
content: "\f101";
font-weight: 900;
}
Как говорится на сайте 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 Awesome 5 с использованием SCSS
.icon {
@extend %fa-icon;
@extend .fas;
&:before {
content: fa-content($fa-var-user);
}
}
Вот мой шрифт 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";
}