Jak używać czcionek Google w React.js?


104

Zbudowałem stronę internetową z React.js i pakietem webpack .

Chcę używać czcionek Google na stronie, więc wstawiam link w sekcji.

Czcionki Google

<link href="https://fonts.googleapis.com/css?family=Bungee+Inline" rel="stylesheet">

I ustaw CSS

body{
    font-family: 'Bungee Inline', cursive;
}

Jednak to nie działa.

Jak mogę rozwiązać ten problem?


1
Umieściłeś <link>znak w nagłówku strony, a nie w aplikacji reagowania, prawda? Czy określasz font-familygdziekolwiek indziej w swoim arkuszu stylów lub bezpośrednio na elementach?
Timo

Czy używasz protokołu https i czy masz wdrożoną politykę bezpieczeństwa?
Stuart

Właściwie wiem, jaka jest poprawna metoda importowania czcionek Google. Myślę, że potrzebuję prostego przykładu. Czy możesz mi pomóc ...
Kevin Hsiao

jak wygląda twoja przecena? czy definiujesz inne style, które mogą zastąpić ten bardziej ogólny?
manonthemat

Rozwiązałem ten problem ..... Metoda, którą wypróbowałem wcześniej, była zła. To jest właściwa metoda. Używanie Google Fonts lokalnie (w hjs-webpack i React) Jednak nadal występuje pewien błąd w procesie tworzenia pakietu internetowego. Te dwie linie kodu powinny zostać zapisane w pliku webpack.config.js . { test: /(\.css$)/, loaders: ['style-loader', 'css-loader', 'postcss-loader'] }, { test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' }
Kevin Hsiao

Odpowiedzi:


87

W jakimś głównym lub pierwszym ładowanym pliku CSS po prostu wykonaj:

@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:regular,bold,italic&subset=latin,latin-ext');

Nie musisz zawijać żadnych znaków @ font-face itp. Odpowiedź, którą otrzymujesz z interfejsu API Google, jest gotowa do pracy i pozwala korzystać z rodzin czcionek w normalny sposób.

Następnie w swojej głównej aplikacji React JavaScript u góry umieść coś takiego:

import './assets/css/fonts.css';

To, co właściwie zrobiłem, zostało app.csszaimportowane fonts.cssz kilkoma importami czcionek. Po prostu dla organizacji (teraz wiem, gdzie są wszystkie moje czcionki). Należy pamiętać, że najpierw należy zaimportować czcionki.

Pamiętaj, że każdy komponent importowany do aplikacji React powinien zostać zaimportowany po zaimportowaniu stylu. Zwłaszcza jeśli te komponenty również importują swoje własne style. W ten sposób możesz być pewien kolejności stylów. Dlatego najlepiej jest zaimportować czcionki u góry głównego pliku (nie zapomnij sprawdzić ostatecznego dołączonego pliku CSS, aby dokładnie sprawdzić, czy masz problemy).

Jest kilka opcji, które możesz przekazać Google Font API, aby być bardziej wydajnym podczas ładowania czcionek itp. Zobacz oficjalną dokumentację: Rozpocznij pracę z Google Fonts API

Edytuj, uwaga: jeśli masz do czynienia z aplikacją „offline”, może być konieczne pobranie czcionek i załadowanie za pomocą Webpack.


1
czy możesz wyjaśnić, dlaczego nie działa sposób użycia linku w nagłówku html?
doobean

63

Czcionki Google w React.js?

Otwórz swój arkusz stylów, tj. App.css, style.css (jaką masz nazwę), nie ma znaczenia, po prostu otwórz arkusz stylów i wklej ten kod

@import url('https://fonts.googleapis.com/css?family=Josefin+Sans');

i nie zapomnij zmienić adresu URL swojej czcionki, którą chcesz, w przeciwnym razie działa dobrze

i użyj tego jako:

body {
  font-family: 'Josefin Sans', cursive;
}

Czy nie lepiej jest załadować czcionki za pomocą JS? Mam na myśli przyczyny wydajności.
Simon Franzen

czy możesz wyjaśnić, dlaczego nie działa sposób użycia linku w nagłówku html?
doobean

22

Jeśli używasz środowiska Create React App, po prostu dodaj regułę @import do index.css w następujący sposób:

@import url('https://fonts.googleapis.com/css?family=Anton');

Importuj plik index.css w swojej głównej aplikacji React:

import './index.css'

React daje Ci wybór między stylami Inline, modułami CSS lub stylowanymi komponentami w celu zastosowania CSS:

font-family: 'Anton', sans-serif;


10

W pliku CSS, takim jak App.css w aplikacji create-react-app, dodaj import fontface. Na przykład:

@fontface {
  font-family: 'Bungee Inline', cursive;
  src: url('https://fonts.googleapis.com/css?family=Bungee+Inline')
}

Następnie po prostu dodaj czcionkę do elementu DOM w tym samym pliku css.

body {
  font-family: 'Bungee Inline', cursive;
}

3
Jeśli chcesz to zrobić, to @ font-face i nie jest to konieczne w przypadku Google Font API.
Tom

Ale co, jeśli chcesz zdefiniować swoje czcionki w pliku css, ponieważ tam one należą? Ale nadal chcesz korzystać z hostingu Google? Czy nie jest to konieczne, czy jest lepszy sposób?
kamień

6

Miałem ten sam problem. Okazuje się, że "zamiast' .

posługiwać się @import url('within single quotes'); ten sposób

nie @import url("within double quotes");tak



3

Inną opcją na wszystkie dobre odpowiedzi tutaj jest pakiet npm react-google-font-loader, który znajduje się tutaj .

Użycie jest proste:

import GoogleFontLoader from 'react-google-font-loader';

// Somewhere in your React tree:

<GoogleFontLoader
    fonts={[
        {
            font: 'Bungee Inline',
            weights: [400],
        },
    ]}
/>

Następnie możesz po prostu użyć nazwiska w swoim CSS:

body {
    font-family: 'Bungee Inline', cursive;
}

Zastrzeżenie: jestem autorem react-google-font-loaderpakietu.


3

Oto dwa różne sposoby dodawania czcionek do aplikacji reagowania.

Dodawanie lokalnych czcionek

  1. Utwórz nowy folder o nazwie fontsw Twoim srcfolderze.

  2. Pobierz czcionki Google lokalnie i umieść je w fontsfolderze.

  3. Otwórz index.cssplik i dołącz czcionkę, odwołując się do ścieżki.

@font-face {
  font-family: 'Rajdhani';
  src: local('Rajdhani'), url(./fonts/Rajdhani/Rajdhani-Regular.ttf) format('truetype');
}

Tutaj dodałem Rajdhaniczcionkę.

Teraz możemy używać naszej czcionki w takich klasach css.

.title{
    font-family: Rajdhani, serif;
    color: #0004;
}

Dodawanie czcionek Google

Jeśli wolisz używać czcionek Google (api) zamiast czcionek lokalnych, możesz to dodać w ten sposób.

@import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@300;500&display=swap');

Podobnie możesz również dodać go do index.htmlpliku za pomocą linktagu.

<link href="https://fonts.googleapis.com/css2?family=Rajdhani:wght@300;500&display=swap" rel="stylesheet">

(pierwotnie opublikowane na https://reactgo.com/add-fonts-to-react-app/ )


1

Jeśli ktoś szuka rozwiązania z (.less), spróbuj poniżej. Otwórz swój główny lub mniejszy plik i użyj go jak poniżej.

@import (css) url('https://fonts.googleapis.com/css?family=Open+Sans:400,700');

body{
  font-family: "Open Sans", sans-serif;
}

0

Może to być samozamykający się tag linku na końcu, spróbuj:

<link href="https://fonts.googleapis.com/css?family=Bungee+Inline" rel="stylesheet"/> 

aw pliku main.css spróbuj:

body,div {
  font-family: 'Bungee Inline', cursive;
}

0

W niektórych przypadkach zasób czcionek może znajdować się gdzieś w katalogu projektu. Możesz więc załadować go w ten sposób za pomocą SCSS

 $list: (
      "Black",
      "BlackItalic",
      "Bold",
      "BoldItalic",
      "Italic",
      "Light",
      "LightItalic",
      "Medium",
      "MediumItalic",
      "Regular",
      "Thin",
      "ThinItalic"
    );
    
    @mixin setRobotoFonts {
      @each $var in $list {
        @font-face {
          font-family: "Roboto-#{$var}";
          src: url("../fonts/Roboto-#{$var}.ttf") format("ttf");
        }
      }
    }
@include setRobotoFonts();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.