Bagaimana saya bisa "menonaktifkan" zoom pada halaman web seluler?


316

Saya membuat halaman web seluler yang pada dasarnya adalah bentuk besar dengan beberapa input teks.

Namun (setidaknya pada ponsel Android saya), setiap kali saya mengklik pada beberapa input, seluruh halaman diperbesar di sana, mengaburkan sisa halaman. Apakah ada perintah HTML atau CSS untuk menonaktifkan zoom semacam ini pada halaman web moble?


3
Seperti kata Greg di atas, jika saya memasuki situs web seluler yang menonaktifkan zoom, hal pertama yang biasanya saya lakukan adalah menekan tombol kembali (kecuali itu sesuatu yang benar-benar harus saya lihat), dan saya yakin saya bukan satu-satunya . Selain itu, berbicara dari pengalaman saya, sebagian besar situs web yang menonaktifkan zoom juga menggunakan font kecil yang akibatnya membuat sulit membaca teks dan sangat tidak nyaman.
tomasz86

8
Saya setuju bahwa itu tidak boleh dinonaktifkan untuk sebagian besar situs, tetapi ada beberapa kasus penggunaan di mana Anda mungkin ingin menonaktifkan zoom bawaan - seperti game web seluler di mana Anda mungkin ingin mengganti zoom untuk melakukan sesuatu yang lain.
Luke

11
Anda tidak - Jika pengguna ingin memperbesar maka biarkan mereka melakukannya. Selain itu: Chrome memiliki opsi untuk mengabaikan permintaan Anda.
Martin

2
Untuk pengguna Android Firefox, ada Add-on Selalu Zoom untuk Firefox . Sangat dianjurkan.
Colin D Bennett

2
Dari iOS 10 , user-scalable=nodiabaikan. Lihat ini
Raptor

Jawaban:


443

Ini harus menjadi semua yang Anda butuhkan

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

23
ini juga menonaktifkan kemampuan pengguna untuk memperbesar secara umum, serta kemampuan browser untuk secara otomatis menyesuaikan cara halaman masuk ke dalam viewport - semua yang dicari Martin adalah cara untuk menonaktifkan 'zoom-on-input-klik' tingkah laku.
matt lohkamp

3
Saat ini seseorang di Posterous melakukan hal itu, sementara memiliki font di 12px sehingga tidak dapat dibaca dan saya tidak dapat menemukan cara mengatasinya.
Emil Ivanov

41
Setiap orang tunanetra, termasuk saya, membenci ini lebih dari apa pun. Saya harus mengambil layar ambil dari halaman yang melakukan ini dan kemudian memperbesar pada mereka di penampil gambar.
Jack Marchetti

6
Apa yang dilakukan tag meta kedua? Bukankah width=device-widthsudah ada di tag meta pertama?
Luke

1
ini sepertinya tidak berfungsi di iOS 7. Lihat jawaban
lukad03

159

Bagi Anda yang terlambat menghadiri pesta, jawaban kgutteridge tidak berfungsi untuk saya dan jawaban Benny Neugebauer mencakup target-densitydpi ( fitur yang sedang tidak digunakan ).

Namun ini berhasil bagi saya:

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

7
Ini jawaban yang benar sekarang. Jawaban yang lain tidak lagi berfungsi (setidaknya untuk iOS 7).
KyleFarris

7
Adakah yang mencoba ini di iOS 10.x Saya tidak berpikir itu berfungsi?
JMac

Tidak bekerja untuk saya. Ini mengubah ukuran semua layar dengan scrollbar dan zoom buruk.
Cocorico

1
Masih tidak berfungsi di Safari / iOS 11 karena masalah SFB di Apple.
15ee8f99-57ff-4f92-890c-b56153

52

Ada sejumlah pendekatan di sini- dan meskipun posisinya adalah bahwa biasanya pengguna tidak boleh dibatasi dalam hal memperbesar untuk tujuan aksesibilitas, mungkin ada insiden di mana diperlukan:

Render halaman di lebar perangkat, jangan skala:

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

Mencegah penskalaan - dan mencegah pengguna untuk memperbesar:

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

Menghapus semua pembesaran, semua penskalaan

<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" />

"biasanya pengguna tidak boleh dibatasi" tetapi ketika mengembangkan aplikasi web untuk seluler Anda sering harus berurusan dengan "zom-in pada fokus input". Saya merasa sangat membantu untuk menonaktifkan pembesaran dalam hal ini.
Le 'nton

@ Le'nton menonaktifkan zoom pada seluruh halaman bukanlah cara yang baik untuk menangani zoom in pada fokus input. Setidaknya di iOS, zoom fokus input dapat dinonaktifkan dengan meningkatkan ukuran font input.
pfg

39

Kamu bisa memakai:

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

Tetapi harap dicatat bahwa dengan Android 4.4 properti target-densitydpi tidak lagi didukung . Jadi untuk Android 4.4 dan yang lebih baru disarankan sebagai praktik terbaik:

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

35

Karena masih belum ada solusi untuk masalah awal, inilah CSS murni saya dua sen.

Peramban seluler (kebanyakan dari mereka) memerlukan input font berukuran 16px. Begitu

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

memecahkan masalah. Jadi Anda tidak perlu menonaktifkan fitur zoom dan aksesibilitas longgar di situs Anda.

Jika ukuran font dasar Anda bukan 16px atau 16px pada ponsel, Anda dapat menggunakan kueri 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
Mengapa solusi ini memiliki sedikit suara? Sejauh ini cara terbaik untuk menghindari zoom bentuk-klik.
KlausCPH

1
Iya; ini memecahkan masalah saya juga! Saya tidak ingin menonaktifkan zoom sepenuhnya dan ini hanya yang saya butuhkan.
brendan

1
Anda juga dapat mengatur font-size: 1remuntuk seluruh halaman, sehingga font dapat menyesuaikan dengan baik, sekaligus menghindari masalah "fokus-pada-pembesaran".
itachi



6

Kemungkinan Solusi untuk Aplikasi Web: Walaupun zoom tidak dapat dinonaktifkan di iOS Safari lagi, zoom akan dinonaktifkan saat membuka situs dari pintasan layar beranda.

Tambahkan tag meta ini untuk menyatakan Aplikasi Anda sebagai "mampu Aplikasi Web":

    <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' />

Namun hanya gunakan fitur ini jika aplikasi Anda mandiri, karena tombol maju / mundur dan bilah URL serta opsi berbagi dinonaktifkan. (Anda masih dapat menggesek ke kiri dan kanan) Namun pendekatan ini memungkinkan aplikasi seperti ux. Peramban layar penuh hanya dimulai ketika situs dimuat dari layar beranda. Saya juga hanya bisa berfungsi setelah saya memasukkan apple-touch-icon-180x180.png di folder root saya.

Sebagai bonus, Anda mungkin juga ingin memasukkan varian dari ini juga:

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

1

Anda dapat menyelesaikan tugas dengan hanya menambahkan elemen 'meta' berikut ke 'kepala' Anda:

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

Menambahkan semua atribut seperti 'lebar', 'skala awal', 'lebar maksimum', 'skala maksimum' mungkin tidak berfungsi. Karena itu, tambahkan saja elemen di atas.


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

Silakan Tambahkan Skrip ke Nonaktifkan cubitan, ketuk, fokus Zoom

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.