Dostosowywanie typografii do preferencji użytkownika za pomocą CSS

Metoda dostosowywania czcionki do preferencji użytkowników, aby zapewnić im maksymalny komfort czytania treści.

Włączenie użytkowników w proces projektowania było ekscytującym doświadczeniem dla użytkowników, projektantów i deweloperów. Użytkownicy mogą przejść do Twojej usługi i od razu zacząć korzystać z treści, a ich preferencje są w pełni zintegrowane z wynikami wyszukiwania.

W tym poście na blogu opisujemy, jak za pomocą zapytań multimedialnych CSS i czcionki zmiennej jeszcze bardziej dostosować sposób wyświetlania tekstu. Możesz dostosować stopień i grubość czcionki za pomocą parametru font-variation-settings, co pozwala na precyzyjne dostrajanie w zależności od różnych preferencji i kontekstów, np. preferencji dotyczących trybu ciemnego lub wysokiego kontrastu. Możemy uwzględnić te preferencje i dostosować czcionkę zmienną do potrzeb użytkownika.

  • Tryb ciemny ma nieco mniejszą gradację.
  • Duży kontrast ma teraz pogrubioną czcionkę.
  • Niski kontrast powoduje, że czcionka jest cieńsza.
https://codepen.io/argyleink/pen/mdQrqvj

Zapoznaj się z każdą częścią CSS i czcionki zmiennej, które umożliwiają ten ważny moment.

Konfiguracja

Aby skupić się na wartościach ustawień CSS i wariantów czcionek, ale też mieć coś do przeczytania i zobaczenia, możesz użyć tego kodu do wyświetlenia podglądu:

<h1>Variable font weight based on contrast preference</h1>  <p>   Lorem ipsum dolor sit amet consectetur adipisicing elit.   Officia, quod? Quidem, nemo aliquam, magnam rerum distinctio   itaque nisi nam, cupiditate dolorum ad sint. Soluta nemo   labore aliquid ex, dicta corporis. </p> 

Bez dodawania kodu CSS rozmiar czcionki jest już dostosowany do preferencji użytkownika. Oto film z innej wersji demonstracyjnej, który pokazuje, jak ustawienie font-size w pikselach spowoduje zignorowanie preferencji użytkownika i dlaczego rozmiar czcionki należy ustawiać w jednostkach rem:

Na koniec, aby wyśrodkować i obsłużyć wersję demonstracyjną, użyjemy trochę kodu CSS:

@layer demo.support {   body {     display: grid;     place-content: center;     padding: var(--size-5);     gap: var(--size-5);   }    h1 {     text-wrap: balance;   } } 

Zrzut ekranu z podglądem wersji demonstracyjnej w motywie jasnym i ciemnym.

Ta konfiguracja demonstracyjna umożliwia rozpoczęcie testowania i wdrażania tej przydatnej funkcji UX związanej z typografią.

Wczytywanie czcionki zmiennej Roboto Flex

Strategia adaptacyjna zależy od czcionki zmiennej z odpowiednimi osiami do dostosowywania, w szczególności od osi GRADwght. W tym artykule omawiamy docelowe preferencje użytkownika dotyczące schematu kolorów i kontrastu, które dostosowują te osie do preferencji użytkownika.

Wczytaj czcionkę zmienną za pomocą interfejsu @font-face CSS API:

@font-face {   font-family: "Roboto Flex";   src: url('https://assets.codepen.io/2585/RobotoFlex') format('truetype'); } 

Następnie zastosuj czcionkę do treści. Ten kod CSS stosuje się do wszystkich elementów:

@layer demo.support {   body {     font-family: Roboto Flex;   } } 

Podgląd zrzutu ekranu wersji demonstracyjnej, na którym widać, że czcionka Roboto Flex jest teraz używana zarówno w motywie ciemnym, jak i jasnym.

Niestandardowe właściwości CSS i zapytania o media

Po wczytaniu czcionki możesz wysyłać zapytania o preferencje użytkownika i dostosowywać do nich ustawienia czcionki zmiennej.

Ustawienia, gdy nie ma preferencji (domyślne)

Te style początkowe będą stylami domyślnymi, czyli stylami dla użytkowników bez żadnych preferencji.

@layer demo {   body {     --base-weight: 400;     --base-grade: 0;      font-variation-settings:       "wght" var(--base-weight),       "GRAD" var(--base-grade)     ;   } } 

Ustawienia, gdy preferowany jest wysoki kontrast

W przypadku użytkowników, którzy w ustawieniach systemu wskazali preferencję dotyczącą wysokiego kontrastu, zwiększ wartość --base-weight400 na 700:

@layer demo {   @media (prefers-contrast: more) {     body {       --base-weight: 700;     }   } } 

Teraz podczas czytania jest większy kontrast.

Ustawienia, gdy preferowany jest niski kontrast

W przypadku użytkowników, którzy w ustawieniach systemu wskazali preferencję dotyczącą niskiego kontrastu, zmniejsz wartość --base-weight400 na 200:

@layer demo {   @media (prefers-contrast: less) {     body {       --base-weight: 200;     }   } } 

Teraz podczas czytania kontrast jest mniejszy.

Ustawienia, gdy preferowany jest tryb ciemny

@layer demo {   @media (prefers-color-scheme: dark) {     body {       --base-grade: -25;     }   } } 

Uwzględniliśmy już różnice w postrzeganiu jasnego tekstu na ciemnym tle i ciemnego tekstu na jasnym tle.

Wszystko w jednym miejscu

@layer demo {   body {     --base-weight: 400;     --base-grade: 0;      font-variation-settings:       "wght" var(--base-weight),       "GRAD" var(--base-grade)     ;   }    @media (prefers-contrast: more) {     body {       --base-weight: 700;     }   }    @media (prefers-contrast: less) {     body {       --base-weight: 200;     }   }    @media (prefers-color-scheme: dark) {     body {       --base-grade: -25;     }   } } 

Możesz też dla zabawy użyć zagnieżdżania CSS:

@layer demo {   body {     --base-weight: 400;     --base-grade: 0;      font-variation-settings:       "wght" var(--base-weight),       "GRAD" var(--base-grade)     ;      @media (prefers-contrast: more)     { --base-weight: 700 }     @media (prefers-contrast: less)     { --base-weight: 200 }     @media (prefers-color-scheme: dark) { --base-grade: -25 }   } } 

Dzięki temu czcionka jest dostosowywana do preferencji użytkownika. Pełny kod źródłowy znajdziesz poniżej w Codepen.