Use o ícone Fonte impressionante como conteúdo CSS


279

Quero usar um ícone de Fonte impressionante como conteúdo CSS, ou seja,

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

Sei que não posso usar o código HTML content, então só restam imagens?


Na memória, você não pode injetar HTML no DOM usando o atributo content. Apenas texto antigo.
— Mike Causador

Respostas:


634

Atualização para FontAwesome 5 Graças a Aurelien

Você precisa alterar font-familypara Font Awesome 5 BrandsOR Font Awesome 5 Free, com base no tipo de ícone que você está tentando renderizar. Além disso, não se esqueça de declararfont-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

Você pode ler o restante da resposta abaixo para entender como funciona e conhecer algumas soluções alternativas para o espaçamento entre o ícone e o texto.


Impressionante 4 e abaixo

Essa é a maneira errada de usá-lo. Abra a folha de estilo impressionante da fonte, vá para a classfonte que você deseja usar fa-phone, copie a propriedade content sob essa classe com a entidade e use-a como:

a:before {
    font-family: FontAwesome;
    content: "\f095";
}

Demo

Apenas certifique-se de que se você deseja segmentar uma atag específica , considere usar uma opção classpara torná-la mais específica, como:

a.class_name:before {
    font-family: FontAwesome;
    content: "\f095";
}

Usando o caminho acima, você colará o ícone com o texto restante, portanto, se você quiser ter um pouco de espaço entre os dois, faça-o display: inline-block;e use alguns padding-right:

a:before {
    font-family: FontAwesome;
    content: "\f095";
    display: inline-block;
    padding-right: 3px;
    vertical-align: middle;
}

Estendendo esta resposta ainda mais, já que muitos podem ter um requisito para alterar um ícone ao passar o mouse; portanto, para isso, podemos escrever um seletor e regras de :hoveração separados :

a:hover:before {
    content: "\f099"; /* Code of the icon you want to change on hover */
}

Demo

Agora, no exemplo acima, o ícone se desloca por causa do tamanho diferente e você certamente não deseja isso; portanto, você pode definir uma widthdeclaração fixa na base, como

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

Demo



Com font-family: FontAwesome;ele, também muda a fonte das tags âncora. Como podemos lidar com isso?
— Shubh

@Shubh ler o código com cuidado, font-familyé suposto ser chamado :beforetag pseudo e não âncora
— Sr. Estrangeiro

Pensei em acrescentar aqui que você pode encontrar a especificação unicode para um ícone específico sem precisar procurar na fonte. Basta ir à lista de ícones no site incrível de fontes e clicar no ícone que você deseja. Você verá o valor Unicode na página logo abaixo as amostras do ícone: fortawesome.github.io/Font-Awesome/icon/pencil-square-o
— Allen Underwood

Esta lista CSS Unicode para FontAwesome é melhor: astronautweb.co/snippet/font-awesome, porque mostra os contentcódigos corretos para a cópia direta (ou seja, não é necessário). PS: Ainda me pergunto por que os caras do FontAwesome não colocam os códigos de conteúdo em cada página de ícone ?!
— Kai Noack

25

Outra solução sem que você precise mexer manualmente com os caracteres Unicode pode ser encontrada em Como tornar a fonte impressionante - Usando ícones sem i-tags ( aviso: escrevi este artigo ).

Em poucas palavras, você pode criar uma nova classe como esta:

.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);
}

E use-o com qualquer ícone, por exemplo:

<a class="icon fa-car" href="#">This is a link</a>

23

Se você tiver acesso aos arquivos SCSS de font-awesome, poderá usar esta solução simples:

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


3

Você pode usar unicode para isso em CSS. Se você estiver usando a fonte awesome 5, esta é a sintaxe;

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

Você pode ver a documentação deles aqui .


3

Você deve ter o peso da fonte definido como 900 para que a família de fontes Font Awesome 5 Free funcione.

Este é o trabalho:

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

1

Como diz o site 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";
   }

Em .login::before-> edite content:'';para se adequar ao seu unicode.


1

Atualização para o Font Awesome 5 usando SCSS

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

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

0

Aqui está minha solução webpack 4 + font awesome 5:

plugin webpack:

new CopyWebpackPlugin([
    { from: 'node_modules/font-awesome/fonts', to: 'font-awesome' }
  ]),

estilo css global:

@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";
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.