Dokumentacja
Dodaj znacznik viewport dla urządzeń mobilnych
Dodaj znacznik viewport dla urządzeń mobilnych
Bez znacznika viewport telefon zakłada, że strona powstała dla ekranu komputera. Układa ją na szerokość około 980 px i pomniejsza, żeby się zmieściła, więc tekst jest drobny, a odwiedzający muszą powiększać palcami, żeby cokolwiek przeczytać. Twój responsywny CSS nigdy się nie włącza, bo dla przeglądarki ekran jest szeroki.
Ponad połowa wizyt pochodzi z telefonów, a Google indeksuje najpierw mobilną wersję strony. Poprawka to jedna linia w nagłówku strony. Lista kontrolna strony oznacza jej brak jako błąd.
Znacznik
Ta linia trafia do <head>, raz, na każdej stronie:
<meta name="viewport" content="width=device-width, initial-scale=1">
width=device-width układa stronę na prawdziwą szerokość telefonu, initial-scale=1 otwiera ją w normalnym rozmiarze.
Nie wyłączaj powiększania. Warianty z user-scalable=no lub maximum-scale=1 uniemożliwiają odwiedzającym powiększanie. Osoby słabowidzące są od niego zależne, wytyczne dostępności (WCAG 1.4.4) go wymagają, a Lighthouse to zgłasza. Użyj dokładnie linii powyżej.
Ostrzeżenie: Jeśli strona nie ma znacznika viewport, bo motyw lub szablon nigdy nie był responsywny, dodanie znacznika pogorszy jej wygląd na telefonach: układ desktopowy na szerokości telefonu, z przewijaniem w bok. Zaraz po zmianie obejrzyj wynik na telefonie. Nieresponsywna strona potrzebuje nowego motywu lub szablonu, a nie tylko tej linii.
Sprawdź sam
Zamiast example.com wpisz swoją stronę:
curl -s https://example.com | grep -io '<meta[^>]*viewport[^>]*>'
Naprawione oznacza jedną linię z width=device-width. Następnie otwórz stronę na telefonie: tekst powinien być czytelny bez powiększania.
Jak to naprawić
Wybierz, na czym zbudowana jest Twoja strona. Każdy aktualny motyw i kreator stron dodaje znacznik sam, więc jego brak zwykle oznacza stary motyw albo ręcznie pisany szablon.
WordPress
Każdy motyw z katalogu WordPressa napisany w ostatniej dekadzie zawiera ten znacznik. Jeśli Twój go nie ma, najpierw zastanów się, czy motyw w ogóle jest responsywny (zobacz ostrzeżenie powyżej).
Jeśli jest, dodaj znacznik przez wp_head za pomocą darmowej wtyczki Code Snippets (Snippets → Add New, uruchamianie na froncie witryny) albo na końcu pliku functions.php w motywie potomnym (child theme). Nie w motywie nadrzędnym: aktualizacja nadpisałaby kod.
// Mobilny viewport dla motywu, który go pomija.
add_action('wp_head', function () {
echo '<meta name="viewport" content="width=device-width, initial-scale=1">' . "\n";
}, 1);
Sprawdź, czy znacznik pojawia się teraz raz. Jeśli pojawia się dwa razy, motyw jednak go miał i kod nie jest potrzebny. Następnie wyczyść pamięć podręczną stron.
Node.js i Next.js
Next.js, App Router. Next.js sam dodaje do każdej strony domyślny znacznik width=device-width, initial-scale=1. Jeśli go brakuje, poszukaj własnego eksportu viewport albo ręcznie wpisanego <meta name="viewport"> w layoucie, który go nadpisuje. Aby zmienić wartości domyślne, eksportuj viewport z layoutu lub strony (Next.js 14 i nowsze), a nie znacznik <meta>:
export const viewport = {
width: 'device-width',
initialScale: 1,
};
Next.js, Pages Router. Dodaj znacznik przez next/head w pages/_app.js, a nie w pages/_document.js (Next.js ostrzega tam przed znacznikami viewport):
import Head from 'next/head';
export default function App({ Component, pageProps }) {
return (
<>
<Head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</Head>
<Component {...pageProps} />
</>
);
}
Inne aplikacje Node.js (Express z silnikiem szablonów, Astro, SvelteKit): dodaj linię do <head> głównego szablonu. SvelteKit ma ją w src/app.html od początku.
Laravel
Dodaj linię do <head> każdego głównego layoutu, na przykład resources/views/layouts/app.blade.php oraz osobnych layoutów dla gości lub stron marketingowych, jeśli je masz:
<meta name="viewport" content="width=device-width, initial-scale=1">
Layouty generowane przez starter kity Laravela już go zawierają.
Statyczny HTML
Dodaj linię wewnątrz <head> na każdej stronie, zaraz po <meta charset="utf-8">:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Example</title>
</head>
Z generatorem stron (Hugo, Jekyll, Eleventy) dodaj ją raz w szablonie bazowym.
Shopify
Każdy motyw z Shopify Theme Store zawiera ten znacznik. Jeśli Twój go nie ma, motyw został zmodyfikowany: otwórz Online Store → Themes → … → Edit code, znajdź layout/theme.liquid i dodaj linię wewnątrz <head>:
<meta name="viewport" content="width=device-width, initial-scale=1">
Kreatory stron hostowanych
Wix, Squarespace i Webflow same dodają znacznik viewport do każdej strony i nie da się go usunąć. Jeśli lista kontrolna zgłasza jego brak w takiej witrynie, uruchom powyższe polecenie curl: sprawdzenie mogło trafić na inną stronę, niż się spodziewasz (na przykład stronę z hasłem albo przekierowanie na inny host).
Potwierdź poprawkę
Uruchom ponownie polecenie curl z sekcji Sprawdź sam, potem otwórz cel w PulseKeeper i kliknij Sprawdź teraz na zakładce Lista kontrolna. Pozycja zmieni się na OK w ciągu kilku minut, a nie dopiero przy kolejnym codziennym sprawdzeniu.