Mantieni le dimensioni del carattere HTML quando l'orientamento di iPhone cambia da verticale a orizzontale


203

Ho un'applicazione web mobile con un elenco non ordinato contenente più elenchi con un collegamento ipertestuale all'interno di ogni li:

... La mia domanda è come posso formattare i collegamenti ipertestuali in modo che NON cambino dimensione quando vengono visualizzati su un iPhone e l'accellerometro passa da verticale -> orizzontale? In questo momento, ho la dimensione del carattere del collegamento ipertestuale specificata su 14px, ma quando si passa al panorama, si espande fino a 20px. Voglio che la dimensione del carattere rimanga invariata. Ecco il codice:

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>

Risposte:


434

È possibile disabilitare questo comportamento tramite la -webkit-text-size-adjustproprietà CSS:

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

L'uso di questa proprietà è descritto ulteriormente nella Guida al contenuto Web di Safari .


4
Come nota snobojohan, puoi racchiuderlo in una query multimediale specifica per il paesaggio per preservare la possibilità di aumentare la dimensione del carattere sui browser desktop. Ciò non è necessario nelle pagine con target iOS in cui lo zoom con pizzico funzionerà indipendentemente.
Matt Stevens,

Questa funzione non funziona in iOS6. Puoi anche provare a utilizzare il <meta content="viewport"meta tag (vedi sotto)
Dan

13
NON usare none, usa 100%invece, questo è il comportamento che desideri: blog.55minutes.com/2012/04/iphone-text-resizing
fregante

1
Grazie per questo ... Ho cercato di capire cosa stesse succedendo con il dimensionamento dei caratteri nel panorama xD
Jeff Shaver,

3
@ bfred.it +1, penso che varrebbe la pena modificare questa risposta con quel cambiamento.
Ming,

106

Nota: se si utilizza

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

quindi questo disabiliterà il comportamento dello zoom nei browser predefiniti. Una soluzione migliore è:

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

Ciò corregge il comportamento di iPhone / iPad, senza modificare il comportamento del desktop.


25

Usando -webkit-text-size-Adjust: none; direttamente su HTML interrompe la possibilità di ingrandire il testo in tutti i browser webkit. Dovresti combinarlo con alcune query multimediali specifiche per iOS. Per esempio:

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

Stranamente l'ho fatto funzionare solo inserendo la proprietà -webkit all'interno della media query. Grazie!
zuallauz,

12

Come accennato in precedenza, regola CSS

 -webkit-text-size-adjust: none

non funziona più con dispositivi moderni.

Fortunatamente, arriva una nuova soluzione per iOS5 e iOS6 (todo: che dire di iOS7?) :

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

Puoi anche aggiungere , user-scalable=0per disattivare lo zoom con pizzico, in modo che il tuo sito Web si comporti come un'app nativa. Se il tuo disegno si interrompe quando l'utente ingrandisce, utilizza invece questo meta tag:

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

Bene, una buona domanda è se usare il separatore virgola o punto e virgola in questo meta tag! Ma funziona :)
Dan,

2
Ho solo bisogno <meta name="viewport" content="width=device-width, initial-scale=1.0">che abbia effetto.
Foxinni,

1
@Foxinni: grazie, aggiornata la risposta. Penso che questi 2 primi meta tag fossero una spazzatura obsoleta dalle prime versioni di iOS
Dan,

10

Puoi aggiungere una meta nell'intestazione HTML:

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


9

Puoi anche optare per un ripristino CSS, come normalize.css , che include la stessa regola che crazygringo consiglia:

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

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

Come vedi, include anche una regola specifica del fornitore per IE Phone.

Per informazioni aggiornate sull'implementazione in diversi browser, consultare la pagina di riferimento MDN .


3

Il codice seguente funziona per me.

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

Prova a svuotare la cache del browser se non funziona.



0

Nel mio caso questo problema è stato perché ho usato l'attributo CSS width: 100%per il tag HTML input type="text".

Ho modificato il valore widthal 60% e ho aggiunto padding-right:38%.

input {
    padding-right: 38%;
    width: 60%;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.