Pertahankan ukuran font HTML saat orientasi iPhone berubah dari portrait ke landscape


203

Saya memiliki aplikasi web seluler dengan daftar tidak berurutan yang berisi banyak daftar item dengan hyperlink di dalam setiap li:

... Pertanyaan saya adalah bagaimana saya bisa memformat hyperlink sehingga mereka TIDAK mengubah ukuran ketika dilihat pada iPhone, dan accellerometer beralih dari portrait -> landscape? Saat ini, saya memiliki ukuran font hyperlink yang ditentukan hingga 14px, tetapi saat beralih ke lansekap, ia meledak hingga seperti 20px. Saya ingin ukuran font tetap sama. Ini kodenya:

ul li a
{
  font-size:14px;
  text-decoration: none;
  color: #cc9999;
}
<ul>
  <li id="home" class="active">
    <a href="home.html">HOME</a>
  </li>
  <li id="home" class="active">
    <a href="test.html">TEST</a>
  </li>
</ul>

Jawaban:


434

Anda dapat menonaktifkan perilaku ini melalui -webkit-text-size-adjustproperti CSS:

html {
    -webkit-text-size-adjust: 100%; /* Prevent font scaling in landscape while allowing user zoom */
}

Penggunaan properti ini dijelaskan lebih lanjut dalam Panduan Konten Web Safari .


4
Sebagai catatan snobojohan, Anda dapat membungkus ini dalam kueri media khusus lanskap untuk mempertahankan kemampuan meningkatkan ukuran font pada browser desktop. Ini tidak perlu pada halaman yang ditargetkan iOS di mana zoom mencubit akan berfungsi terlepas.
Matt Stevens

Fitur ini sepertinya tidak berfungsi di iOS6. Anda juga dapat mencoba menggunakan <meta content="viewport"tag meta (lihat di bawah)
Dan

13
JANGAN gunakan none, gunakan 100%saja, itulah perilaku yang Anda inginkan: blog.55minutes.com/2012/04/iphone-text-resizing
fregante

1
Terima kasih untuk ini ... Saya telah mencoba mencari tahu apa yang terjadi dengan ukuran font di landscape xD
Jeff Shaver

3
@ bfred.it +1, saya pikir akan bermanfaat mengedit jawaban ini dengan perubahan itu.
Ming

106

Catatan: jika Anda menggunakan

html {
    -webkit-text-size-adjust: none;
}

maka ini akan menonaktifkan perilaku zoom di browser default. Solusi yang lebih baik adalah:

html {
    -webkit-text-size-adjust: 100%;
}

Ini mengoreksi perilaku iPhone / iPad, tanpa mengubah perilaku desktop.


25

Menggunakan -webkit-teks-ukuran-sesuaikan: tidak ada; langsung di html, kemampuan untuk memperbesar teks di semua browser webKit terhenti. Anda harus menggabungkan ini dengan beberapa pertanyaan media yang khusus untuk iOS. Sebagai contoh:

@media only screen and (min-device-width : 320px) and (max-device-width : 1024px) {
     html {
        -webkit-text-size-adjust: none;
     }
}

Lucunya, saya hanya membuatnya bekerja dengan meletakkan properti -webkit di dalam kueri media. Terima kasih!
zuallauz

12

Seperti yang disebutkan sebelumnya, aturan CSS

 -webkit-text-size-adjust: none

tidak lagi berfungsi di perangkat modern.

Untungnya, solusi baru hadir untuk iOS5 dan iOS6 (todo: bagaimana dengan iOS7?) :

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

Anda juga dapat menambahkan , user-scalable=0untuk mematikan pinch zooming, sehingga situs web Anda akan berperilaku seperti aplikasi asli. Jika desain Anda mengerem ketika pengguna memperbesar, gunakan meta tag ini sebagai gantinya:

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

Nah, pertanyaan yang bagus adalah apakah akan menggunakan pemisah koma atau titik koma di tag meta ini! Tapi itu berhasil :)
Dan

2
Saya hanya perlu <meta name="viewport" content="width=device-width, initial-scale=1.0">untuk itu berlaku.
Foxinni

1
@Foxinni: terima kasih, perbarui jawabannya. Saya pikir 2 tag meta pertama ini adalah sampah usang dari versi iOS awal
Dan

10

Anda dapat menambahkan meta di header HTML:

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


9

Anda juga dapat memilih untuk menggunakan reset CSS, seperti normalize.css , yang mencakup aturan yang sama yang direkomendasikan crazygringo:

/**
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

Seperti yang Anda lihat, itu juga termasuk aturan khusus vendor untuk Telepon IE.

Untuk informasi terkini tentang penerapan di berbagai browser, lihat halaman referensi MDN .


3

Kode di bawah ini berfungsi untuk saya.

html{-webkit-text-size-adjust: 100%;}

Coba bersihkan cache browser Anda jika tidak berhasil.



0

Dalam kasus saya masalah ini karena saya menggunakan atribut CSS width: 100%untuk tag HTML input type="text".

Saya mengubah nilai widthmenjadi 60% dan menambahkan padding-right:38%.

input {
    padding-right: 38%;
    width: 60%;
}
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.