Использовать шрифт ужасный значок в качестве содержимого CSS

Я хочу использовать шрифт awesome icon в качестве содержимого CSS, т.е.

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

Я знаю, что не могу использовать HTML-код в content, так остались только изображения?

Ответ 1

Обновление для FontAwesome 5 Благодаря Aurelien

Вам нужно изменить семейство font-family на Font Awesome 5 Brands ИЛИ 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 action:

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 */
}

демонстрация

Ответ 2

Другое решение без необходимости вручную возиться с символами Unicode можно найти в статье " Создание шрифта удивительным - использование значков без 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>

Ответ 3

Если у вас есть доступ к файлам 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;
}

Ответ 5

Вы можете использовать Unicode для этого в CSS. Если вы используете шрифт Awesome 5, это синтаксис;

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

Вы можете увидеть их документацию здесь.

Ответ 6

Как говорится на сайте 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.

Ответ 7

Для работы Font Awesome 5 Free font-family у вас должно быть установлено значение font-weight, равное 900.

Это рабочий:

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

Ответ 8

Обновление для Font Awesome 5 с использованием SCSS

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

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