Preservar o tamanho da fonte HTML quando a orientação do iPhone muda de retrato para paisagem


203

Eu tenho um aplicativo da web móvel com uma lista não ordenada que contém vários itens de lista com um hiperlink dentro de cada li:

... Minha pergunta é como posso formatar os hiperlinks para que eles não mudem de tamanho quando vistos em um iPhone, e o acelerômetro muda de retrato -> paisagem? No momento, tenho o tamanho da fonte do hiperlink especificado para 14px, mas, ao mudar para paisagem, ele aumenta até 20px. Quero que o tamanho da fonte permaneça o mesmo. Aqui está o código:

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>

Respostas:


434

Você pode desativar esse comportamento através da -webkit-text-size-adjustpropriedade CSS:

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

O uso desta propriedade é descrito mais detalhadamente no Guia de Conteúdo da Web do Safari .


4
Como observa o snobojohan, você pode agrupar isso em uma consulta de mídia específica da paisagem para preservar a capacidade de aumentar o tamanho da fonte nos navegadores da área de trabalho. Isso não é necessário em páginas segmentadas por iOS, nas quais o zoom de pitada funcionará independentemente.
Matt Stevens

Esse recurso parece não funcionar no iOS6. Você também pode tentar usar a <meta content="viewport"metatag (veja abaixo) #
194/12 Dan

13
Não use none, use 100%em vez disso, que é o comportamento que você quer: blog.55minutes.com/2012/04/iphone-text-resizing
fregante

1
Obrigado por isso ... Eu tenho tentado descobrir o que estava acontecendo com font-dimensionamento na xD paisagem
Jeff Shaver

3
@ bfred.it +1, acho que valeria a pena editar esta resposta com essa alteração.
Ming

106

Nota: se você usar

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

isso desativará o comportamento do zoom nos navegadores padrão. Uma solução melhor é:

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

Isso corrige o comportamento do iPhone / iPad, sem alterar o comportamento da área de trabalho.


25

Usando -webkit-text-size-Adjust: none; diretamente no html interrompe a capacidade de ampliar o texto em todos os navegadores de kit da web. Você deve combinar isso com algumas consultas de mídia específicas para iOS. Por exemplo:

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

Curiosamente, eu só consegui fazê-lo colocando a propriedade -webkit na consulta de mídia. Obrigado!
Zuallauz

12

Como foi mencionado anteriormente, a regra CSS

 -webkit-text-size-adjust: none

não funciona mais em dispositivos modernos.

Felizmente, existe uma nova solução para iOS5 e iOS6 (todo: o que acontece com iOS7?) :

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

Você também pode adicionar , user-scalable=0para desativar o zoom de pitada, para que seu site se comporte como um aplicativo nativo. Se o seu design travar quando o usuário aumentar o zoom, use esta metatag em vez disso:

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

Bem, uma boa pergunta é se deve usar vírgula ou separador de ponto e vírgula nesta metatag! Mas ele funciona :) #
19412 Dan

2
Eu só preciso <meta name="viewport" content="width=device-width, initial-scale=1.0">que isso entre em vigor.
Foxinni

1
@ Foxinni: obrigado, atualizou a resposta. Acho que esses 2 primeiros metatags eram uma lata de lixo obsoleto a partir de versões mais antigas do iOS
Dan

10

Você pode adicionar uma meta no cabeçalho HTML:

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


9

Você também pode optar por usar uma redefinição de CSS, como normalize.css , que inclui a mesma regra que o crazygringo recomenda:

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

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

Como você vê, também inclui uma regra específica do fornecedor para o telefone IE.

Para obter informações atuais sobre a implementação em diferentes navegadores, consulte a página de referência do MDN .


3

O código abaixo funciona para mim.

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

Tente limpar o cache do navegador se ele não funcionar.



0

No meu caso, esse problema ocorreu porque eu usei o atributo CSS width: 100%para a tag HTMLinput type="text" .

Alterei o valor widthpara 60% e adicionei padding-right:38%.

input {
    padding-right: 38%;
    width: 60%;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.