İPhone yönü dikeyden yataya değiştiğinde HTML yazı tipi boyutunu koru


203

Ben her li içinde bir köprü ile birden çok listitems içeren sırasız bir liste ile bir mobil web uygulaması var:

... Sorum şu ki, köprüleri bir iPhone'da görüntülendiğinde boyutu değiştirmeyecek şekilde nasıl biçimlendirebilirim ve hız ölçer portre -> manzaradan geçer mi? Şu anda, 14px'e özgü köprü yazı tipi boyutum var, ancak manzaraya geçerken, 20px'e kadar patlıyor. Yazı tipi boyutunun aynı kalmasını istiyorum. İşte kod:

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>

Yanıtlar:


434

Bu davranışı -webkit-text-size-adjustCSS özelliği üzerinden devre dışı bırakabilirsiniz :

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

Bu özelliğin kullanımı Safari Web İçerik Kılavuzu'nda daha ayrıntılı olarak açıklanmaktadır .


4
Snobojohan'ın belirttiği gibi, masaüstü tarayıcılarda yazı tipi boyutunu artırma yeteneğini korumak için bunu yatay bir ortam sorgusuna sarabilirsiniz. Sıkıştırma yakınlaştırmanın ne olursa olsun çalışacağı iOS hedefli sayfalarda bu gerekli değildir.
Matt Stevens

Bu özellik iOS6'da çalışmaz dikişler. Ayrıca <meta content="viewport"meta etiketi kullanmayı deneyebilirsiniz (aşağıya bakın)
Dan

13
DO NOT kullanımı none, kullanmak 100%yerine olduğunu : İstediğiniz davranışı blog.55minutes.com/2012/04/iphone-text-resizing
fregante

1
Bunun için teşekkürler ... Yatay xD yazı tipi boyutlandırma ile neler olup bittiğini anlamaya çalışıyorum
Jeff Shaver

3
@ bfred.it +1, bence bu yanıtı bu değişiklikle düzenlemeye değer.
Ming

106

Not: kullanıyorsanız

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

bu, varsayılan tarayıcılarda yakınlaştırma davranışını devre dışı bırakır. Daha iyi bir çözüm:

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

Bu, masaüstü davranışını değiştirmeden iPhone / iPad davranışını düzeltir.


25

-Webkit-text-size-adjust kullanma: none; doğrudan html üzerinde tüm webkit tarayıcılarında metin yakınlaştırma yeteneğini kırar. Bunu iOS'a özgü som medya sorgularıyla birleştirmelisiniz. Örneğin:

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

Funnily yeterli Ben sadece medya sorgusu içine -webkit özelliği koyarak işe aldım. Teşekkürler!
11:18

12

Daha önce de belirtildiği gibi, CSS kuralı

 -webkit-text-size-adjust: none

artık modern cihazlarda çalışmaz.

Neyse ki, iOS5 ve iOS6 için yeni bir çözüm geliyor (yapılacaklar: iOS7 ne olacak?) :

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

, user-scalable=0Sıkıştırma yakınlaştırmayı kapatmak için de ekleyebilirsiniz , böylece web siteniz yerel bir uygulama gibi davranır. Kullanıcı yakınlaştırdığında tasarımınız frenlenirse, bunun yerine bu meta etiketi kullanın:

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

İyi bir soru, bu meta etikette virgül veya noktalı virgül ayırıcı kullanılıp kullanılmayacağıdır! Ama işe yarıyor :)
Dan

2
Sadece etkili olması <meta name="viewport" content="width=device-width, initial-scale=1.0">için ihtiyacım var .
Foxinni

1
@Foxinni: teşekkürler, cevabı güncelledi. Sanırım bu ilk 2 meta etiket, erken iOS sürümlerinden kaldırılan bir çöp oldu
Dan

10

HTML başlığına bir meta ekleyebilirsiniz:

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


9

Ayrıca , crazygringo'nun önerdiği kuralın aynısını içeren normalize.css gibi bir CSS sıfırlaması kullanmayı da tercih edebilirsiniz :

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

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

Gördüğünüz gibi, IE Telefon için satıcıya özel bir kural da içerir.

Farklı tarayıcılarda uygulama hakkında güncel bilgiler için MDN başvuru sayfasına bakın .


3

Aşağıdaki kod benim için çalışıyor.

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

Eğer işe yaramazsa tarayıcı önbelleğinizi temizlemeyi deneyin.



0

Benim durumumda bu sorun, width: 100%HTML etiketi için CSS özniteliğini kullandığımdan kaynaklandı input type="text".

Değerini width% 60 olarak değiştirdim ve ekledim padding-right:38%.

input {
    padding-right: 38%;
    width: 60%;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.