Jak mogę „wyłączyć” powiększenie strony mobilnej?


316

Tworzę mobilną stronę internetową, która jest w zasadzie dużą formą z kilkoma danymi wejściowymi.

Jednak (przynajmniej na moim telefonie z Androidem), za każdym razem, gdy klikam jakieś dane wejściowe, cała strona powiększa się, zasłaniając resztę strony. Czy jest jakieś polecenie HTML lub CSS, które wyłącza takie powiększanie na stronach internetowych?


3
Jak powiedział Greg powyżej, jeśli wejdę na stronę mobilną, która wyłącza powiększanie, pierwszą rzeczą, którą zwykle robię, jest naciśnięcie przycisku Wstecz (chyba że to coś, co naprawdę muszę zobaczyć) i jestem pewien, że nie jestem jedyny . Ponadto, mówiąc z mojego doświadczenia, większość stron, które mają wyłączone powiększanie, również używają małych czcionek, co powoduje, że czytanie tekstu jest trudne i bardzo niewygodne.
tomasz86

8
Zgadzam się, że nie należy go wyłączać w przypadku większości witryn, ale są przypadki użycia, w których możesz chcieć wyłączyć domyślne powiększanie - na przykład mobilne gry internetowe, w których możesz chcieć zastąpić powiększanie, aby zrobić coś innego.
Łukasz

11
Nie chcesz - jeśli użytkownicy chcą powiększyć, pozwól im to zrobić. Poza tym: Chrome ma opcję zignorowania Twojego żądania.
Martin

2
Użytkownicy Androida Firefox mają dodatek Always Zoom for Firefox . Wysoce polecany.
Colin D Bennett,

2
Z iOS 10 , user-scalable=nojest ignorowany. Zobacz to
Raptor,

Odpowiedzi:


443

To powinno być wszystko, czego potrzebujesz

<meta 
     name='viewport' 
     content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' 
/>

23
wyłącza to również ogólnie możliwość powiększania przez użytkownika, a także zdolność przeglądarki do automatycznego dostosowywania sposobu dopasowania strony do obszaru wyświetlania - wszystko, czego Martin szuka, to sposób na wyłączenie „powiększania przy kliknięciu wejścia” zachowanie.
matt lohkamp

3
W tej chwili ktoś w Posterous właśnie to zrobił, mając czcionkę o wielkości 12 pikseli, więc jest ona nieczytelna i nie mogę jej obejść.
Emil Iwanow

41
Każda osoba niedowidząca, w tym ja, nienawidzi tego bardziej niż czegokolwiek innego. Muszę zrobić zrzuty ekranu ze stron, które to robią, a następnie powiększyć je w przeglądarce zdjęć.
Jack Marchetti

6
Co robi drugi metatag? Czy nie ma width=device-widthjuż pierwszego metatagu?
Łukasz

1
wydaje się, że to nie działa na iOS 7. Zobacz odpowiedź
lukad03

159

Dla tych z was, którzy spóźniają się na przyjęcie, odpowiedź kgutteridge nie działa dla mnie, a odpowiedź Benny'ego Neugebauera obejmuje docelową gęstość dpi ( funkcja jest przestarzała ).

To jednak działa dla mnie:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

7
To jest poprawna odpowiedź teraz. Inne odpowiedzi już nie działają (przynajmniej dla iOS 7).
KyleFarris

7
Ktoś próbował tego na iOS 10.x Nie wydaje mi się, żeby to działało?
JMac

Nie działa dla mnie. Zmienił rozmiar całego ekranu za pomocą paska przewijania i złego powiększenia.
Cocorico,

1
Wciąż nie działa na Safari / iOS 11 z powodu problemu z SFB w Apple.
15ee8f99-57ff-4f92-890c-b56153

52

Istnieje tu kilka podejść - i chociaż istnieje taka sytuacja, że zazwyczaj użytkownicy nie powinni być ograniczani, jeśli chodzi o powiększanie w celu ułatwienia dostępu, mogą wystąpić przypadki, w których jest to wymagane:

Renderuj stronę na szerokość urządzenia, nie skaluj:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Zapobiegaj skalowaniu i uniemożliwiaj użytkownikowi powiększanie:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

Usuwanie całego powiększania, całego skalowania

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

„zwykle użytkownicy nie powinni być ograniczani”, ale przy tworzeniu aplikacji internetowych na urządzenia mobilne często trzeba radzić sobie z „zom-in on focus focus”. W takim przypadku pomocne jest wyłączenie powiększania.
Le 'nton

@ Wyłączenie powiększania na całej stronie przez Le'ntona nie jest dobrym sposobem radzenia sobie z powiększaniem ostrości na wejściu. Przynajmniej w systemie iOS powiększanie ostrości na wejściu można wyłączyć, zwiększając rozmiar czcionki na wejściu.
pfg

39

Możesz użyć:

<head>
  <meta name="viewport" content="target-densitydpi=device-dpi, initial-scale=1.0, user-scalable=no" />
  ...
</head>

Należy jednak pamiętać, że w systemie Android 4.4 właściwość target-gęstośćdpi nie jest już obsługiwana . W przypadku Androida 4.4 i nowszych jako najlepszą praktykę zaleca się:

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />

35

Ponieważ wciąż nie ma rozwiązania dla pierwszego wydania, oto mój czysty CSS dwa centy.

Przeglądarki mobilne (większość z nich) wymagają czcionek o wielkości 16px. Więc

input[type="text"],
input[type="number"],
input[type="email"],
input[type="tel"],
input[type="password"] {
  font-size: 16px;
}

rozwiązuje problem. Nie musisz więc wyłączać funkcji powiększania i utraty dostępności w swojej witrynie.

Jeśli Twój podstawowy rozmiar czcionki nie jest 16px lub nie 16px w telefonach komórkowych, możesz użyć zapytań o media.

@media screen and (max-width: 767px) {
  input[type="text"],
  input[type="number"],
  input[type="email"],
  input[type="tel"],
  input[type="password"] {
    font-size: 16px;
  }
}


2
Dlaczego to rozwiązanie ma tak mało głosów? Jest to zdecydowanie najlepszy sposób na uniknięcie powiększania za pomocą kliknięcia formularza.
KlausCPH

1
Tak; to również rozwiązało mój problem! Nie chciałem całkowicie wyłączać powiększania i właśnie tego potrzebowałem.
brendan

1
Możesz także ustawić font-size: 1remcałą stronę, aby czcionka ładnie skalowała się, jednocześnie unikając problemu „skupiania się na powiększeniu”.
itachi



6

Możliwe rozwiązanie dla aplikacji internetowych: Chociaż powiększania nie można już wyłączyć w iOS Safari, zostanie ono wyłączone podczas otwierania strony za pomocą skrótu na ekranie głównym.

Dodaj te metatagi, aby zadeklarować swoją aplikację jako „obsługującą aplikację internetową”:

    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/>
    <meta name='apple-mobile-web-app-capable' content='yes' />

Tej funkcji należy jednak używać tylko wtedy, gdy aplikacja jest samowystarczalna, ponieważ przyciski do przodu / do tyłu i pasek adresu URL oraz opcje udostępniania są wyłączone. (Nadal możesz jednak przesuwać palcem w lewo i w prawo). Takie podejście umożliwia jednak całkiem podobną aplikację jak ux. Przeglądarka pełnoekranowa uruchamia się tylko wtedy, gdy witryna jest ładowana z ekranu głównego. Udało mi się to również uruchomić po tym, jak włączyłem do folderu głównego ikonę apple-touch-icon-180x180.png.

Jako bonus prawdopodobnie chcesz również uwzględnić wariant tego:

<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent'/>

1

Możesz wykonać to zadanie, po prostu dodając następujący element „meta” do „head”:

<meta name="viewport" content="user-scalable=no">

Dodanie wszystkich atrybutów, takich jak „szerokość”, „początkowa skala”, „maksymalna szerokość”, „maksymalna skala” może nie działać. Dlatego po prostu dodaj powyższy element.


-1
<script type="text/javascript">
document.addEventListener('touchmove', function (event) {
  if (event.scale !== 1) { event.preventDefault(); }
}, { passive: false });
</script>

Dodaj skrypt, aby wyłączyć szczypanie, dotknij, ustaw ostrość

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.