Використовуйте значок шрифту Awesome як вміст CSS


278

Я хочу використовувати піктограму Font Awesome як вміст CSS, тобто

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

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


З пам’яті ви не можете вводити HTML у DOM за допомогою атрибута вмісту. Просто звичайний старий текст.
Майк Каузер

Відповіді:


633

Оновлення для FontAwesome 5 Завдяки Aurelien

Вам потрібно змінити font-familyна Font Awesome 5 BrandsOR 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;його допомогою також змінюється шрифт для якірних тегів. Як ми можемо це впоратися?
Шуб

@Shubh уважно читати код, font-familyприпустимо, його називають :beforeпсевдо, а не тег прив’язки
Містер

Просто подумав, що я додам тут, що ви можете знайти специфікацію Unicode для певного значка, не вникаючи в джерело. Просто перейдіть до списку піктограм на приголомшливому веб-сайті шрифту та натисніть потрібний значок. Значення Unicode ви побачите на сторінці безпосередньо під зразками піктограми: fortawesome.github.io/Font-Awesome/icon/pencil-square-o
Аллен Андервуд

Цей список Unicode CSS для FontAwesome є кращим: astronautweb.co/snippet/font-awesome, тому що він показує правильні contentкоди для прямого копіювання (тобто, без монітора). PS: Мені все ще цікаво, чому хлопці FontAwesome не ставлять коди вмісту на кожну сторінку значків ?!
Кай Ноак

25

Ще одне рішення, без того, щоб вам вручну заплутувались символи 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>

23

Якщо у вас є доступ до файлів 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;
}


3

Ви можете використовувати Unicode для цього в CSS. Якщо ви використовуєте шрифт awesome 5, це синтаксис;

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

З їх документацією ви можете ознайомитись тут .


3

Вам слід встановити вагу шрифту на рівні 900, щоб шрифт Awesome 5 Free сім'ї шрифтів працював.

Це робочий:

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

1

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



0

Ось мій вебпакет 4 + шрифтове дивовижне рішення 5:

плагін для веб-упаковки:

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";
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.