Użyj czcionek Niesamowite ikony w CSS

304

Mam trochę CSS, który wygląda tak:

#content h2 {
   background: url(../images/tContent.jpg) no-repeat 0 6px;
}

Chciałbym zastąpić obraz ikoną z Font Awesome .

Nie widzę zresztą użycia ikony w CSS jako obrazu tła. Czy można to zrobić, zakładając, że arkusze / czcionki Font Awesome są ładowane przed moim CSS?

L84
źródło
Glifów z czcionek nie można używać jako tła. SVG mogą
cimmanon
@cimmanon, czy mógłbyś wyjaśnić, w jaki sposób można to zastosować do czcionek fantastycznych
BonsaiOak,
@BonsaiOak Co wyjaśnić, czego nie wyjaśnia jeszcze wybrana odpowiedź? Jeśli masz pytanie, na które nie ma na nie odpowiedzi (lub inne pytanie dotyczące SO), zadaj nowe pytanie.
cimmanon
@ cimmanon przepraszam za brak jasności. Wydawało się, że sugerujesz, że można użyć ikony z pliku czcionek font-awesome.svg jako tła. Jednak nigdy nie powiedziałeś tego wprost, więc nie jestem pewien.
BonsaiOak
1
@BonsaiOak Tak, można użyć SVG jako obraz tła, tak samo byłoby użyć dowolnego innego obrazu. Jednak tak naprawdę nie patrzyłem na FontAwesome SVG, aby sprawdzić, czy można go używać w ten sposób.
cimmanon

Odpowiedzi:

489

Nie można używać tekstu jako tła, ale można użyć :beforealbo :afterpseudo klas, aby umieścić postać tekstową, gdzie chcesz, bez konieczności dodawania wszelkiego rodzaju bałagan dodatkową dopłatę.

Pamiętaj, aby ustawić position:relativefaktyczne opakowanie tekstu, aby pozycjonowanie działało.

.mytextwithicon {
    position:relative;
}    
.mytextwithicon:before {
    content: "\25AE";  /* this is your text. You can also use UTF-8 character codes as I do here */
    font-family: FontAwesome;
    left:-5px;
    position:absolute;
    top:0;
 }

EDYTOWAĆ:

Czcionka Awesome v5 używa innych nazw czcionek niż starsze wersje:

  • W przypadku FontAwesome v5, wersja bezpłatna, użyj: font-family: "Font Awesome 5 Free"
  • W przypadku FontAwesome v5, wersja Pro użyj: font-family: "Font Awesome 5 Pro"

Pamiętaj, że powinieneś również ustawić tę samą właściwość font-weight (wydaje się, że jest to 900).

Innym sposobem znalezienia nazwy czcionki jest kliknięcie prawym przyciskiem myszy niesamowitej ikony przykładowej czcionki na stronie i pobranie nazwy czcionki (w ten sam sposób można znaleźć kod ikony utf-8, ale pamiętaj, że możesz go znaleźć :before).

Diodeus - James MacFarlane
źródło
63
Odpowiednik tekstowy każdej ikony znajduje się na fortawesome.github.io/Font-Awesome/cheatsheet
Matthieu
61
Musisz usunąć & # x od początku i; od końca. Nazwa rodziny czcionek to FontAwesome
Matthieu
5
@David, to tylko tekst, użyj font-size.
JCM
6
dla FontAwesome v5 musisz użyć .backspace:before { font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f55a"; }
Digvijayad
5
Tylko uwaga, że ​​nie działa to z elementami wejściowymi (jak przycisk wysyłania), ponieważ wydają się nie obsługiwać: przed lub po.
Mir
70

W odpowiedzi na powyższą odpowiedź z Diodeusa potrzebujesz font-family: FontAwesomereguły (zakładając, że @font-facereguła dla FontAwesome została już zadeklarowana w CSS). Następnie chodzi o to, aby wiedzieć, która wartość zawartości CSS odpowiada której ikonie.

Wymieniłem je wszystkie tutaj: http://astronautweb.co/snippet/font-awesome/

Astrotim
źródło
1
pracował po usunięciu pozycji: absolutna; w elemencie: wcześniej, teraz mogę ozdobić moje linki niesamowitymi ikonami czcionek, ale zachowaj swoją niestandardową czcionkę linku
jethroo
świetna lista wartości treści!
Anthony
1
Jak zauważono w odpowiedzi @staabm, FontAwesome prowadzi oficjalną listę kodów dla każdego glifu: fontawesome.io/cheatsheet
alxndr
24

W rzeczywistości nawet font-awesomeCSS ma podobną strategię ustawiania swoich stylów ikon. Jeśli chcesz szybko uzyskać icon kod , sprawdź non-minified font-awesome.cssplik i tam są .... każda czcionka jest czysta.

Font-Awesome zrzut ekranu pliku CSS

Akash
źródło
22

Podsumowując wszystko powyżej, następująca klasa jest skuteczna

   .faArrowIcon {
        position:relative;
    }

    .faArrowIcon:before {
        font-family: FontAwesome;
        top:0;
        left:-5px;
        padding-right:10px;
        content: "\f0a9"; 
    }
Lakshman Pilaka
źródło
najlepsza odpowiedź, ponieważ możesz po prostu usunąć poprzedni znacznik <i> przed odpowiednim tekstem z ikoną i zastąpić go. I ta sama przestrzeń jest podana.
andygoestohollywood
7

Możesz wypróbować tę przykładową klasę. i znajdź treść ikony tutaj: http://astronautweb.co/snippet/font-awesome/

  #content h2:before {
    display: inline-block;
    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);
    content: "\f007";
    }
Shiv Singh
źródło
6

Aby użyć niesamowitej czcionki za pomocą css, wykonaj następujące czynności -

krok 1 - Dodaj czcionki FontAwesome w CSS

/*Font Awesome Fonts*/
@font-face {
    font-family: 'FontAwesome';
    //in url add your folder path of FontAwsome Fonts
    src: url('font-awesome/fontawesome-webfont.ttf') format('truetype');
}

Krok - 2 Użyj poniższego css, aby zastosować czcionkę do elementu klasy HTML

.sorting_asc:after {
    content: "\f0de"; /* this is your text. You can also use UTF-8 character codes as I do here */
    font-family: FontAwesome;
    padding-left: 10px !important;
    vertical-align: middle;
}

Na koniec użyj klasy „ sorting_asc ”, aby zastosować css do żądanego znacznika / elementu HTML.

Ravindra Vairagi
źródło
2

Nie ma potrzeby osadzania treści w CSS. Możesz umieścić treść znaczka wewnątrz elementu fa, a następnie dostosować css znaczka. http://jsfiddle.net/vmjwayrk/2/

<i class="fa fa-envelope fa-5x" style="position:relative;color:grey;">
  <span style="
        background-color: navy;
        border-radius: 50%;
        font-size: .25em;
        display:block;
        position:absolute;
        text-align: center;
        line-height: 2em;
        top: -.5em;
        right: -.5em;
        width: 2em;
        height: 2em;
        border:solid 4px #fff;
        box-shadow:0px 0px 1px #000;
        color: #fff;
    ">17</span>
</i>
George Hix
źródło
8
„Nie ma potrzeby osadzania treści w CSS”. Cóż, w niektórych sytuacjach jest to potrzebne.
Stéphane Bruckert
2
Jeśli nie zależy ci na stopniowym ulepszaniu, to dobrze, ale naprawdę powinieneś trzymać stylizację w pliku css, gdy tylko jest to możliwe.
Adam Carr
2

Alternatywnie, jeśli używasz Sassa, możesz „rozszerzyć” ikony FA, ​​aby je wyświetlić:

.mytextwithicon:before {
  @extend .fas, .fa-angle-double-right;

  @extend .mr-2; // using bootstrap to add a small gap
                 // between the icon and the text.
}
Hiura
źródło
0

W tym celu wystarczy dodać contentatrybut i font-familyatrybut do wymaganego elementu za pomocą: przed lub: po, jeśli dotyczy.

Na przykład: chciałem dołączyć ikonę załącznika po całym aelemencie w moim poście. Więc najpierw muszę sprawdzić, czy taka ikona istnieje w fontawesome. Podobnie jak w przypadku znalazłem go tutaj , tj fa fa-paperclip. Następnie kliknąłem tam ikonę prawym przyciskiem myszy i przeszedłem do ::beforepseudo-właściwości, aby pobrać contenttag, którego używa, co w moim przypadku jest \f0c6. Następnie użyłbym tego w moim css w następujący sposób:

   .post a:after {
     font-family: FontAwesome,
     content: " \f0c6" /* I added a space before \ for better UI */
    }
Animesh Singh
źródło