Сохранять размер шрифта HTML при изменении ориентации iPhone с портрета на пейзаж
У меня есть мобильное веб-приложение с неупорядоченным списком, содержащим несколько списков с гиперссылкой внутри каждого li:
... Мой вопрос в том, как я могу отформатировать гиперссылки, чтобы они не меняли размер при просмотре на iPhone, а accellerometer переключается с портрета → на пейзаж? Прямо сейчас у меня размер шрифта гиперссылки spec'ed до 14px, но при переключении на пейзаж он пробивается до 20px. Я хочу, чтобы размер шрифта остался прежним. Вот код:
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>
Ответы
Ответ 1
Вы можете отключить это поведение с помощью свойства -webkit-text-size-adjust
CSS:
html {
-webkit-text-size-adjust: 100%; /* Prevent font scaling in landscape while allowing user zoom */
}
Использование этого свойства описано далее в Руководстве по веб-контенту Safari.
Ответ 2
Примечание: если вы используете
html {
-webkit-text-size-adjust: none;
}
то это отключит поведение масштабирования в браузерах по умолчанию. Лучшее решение:
html {
-webkit-text-size-adjust: 100%;
}
Это исправляет поведение iPhone/iPad, не изменяя поведение рабочего стола.
Ответ 3
Использование -webkit-text-size-adjust: none; прямо на html ломает возможность масштабирования текста во всех браузерах webkit. Вы должны объединить это с запросами сома, специфичными для iOS. Например:
@media only screen and (min-device-width : 320px) and (max-device-width : 1024px) {
html {
-webkit-text-size-adjust: none;
}
}
Ответ 4
Как уже упоминалось ранее, правило CSS
-webkit-text-size-adjust: none
больше не работает на современных устройствах.
К счастью, для iOS5 и iOS6 появилось новое решение (todo: что относительно iOS7?):
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
Вы также можете добавить , user-scalable=0
, чтобы отключить масштабирование, поэтому ваш сайт будет вести себя как родное приложение. Если ваша конструкция тормозит при масштабировании пользователя, используйте вместо этого метатег:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
Ответ 5
Вы можете добавить мета в HTML-заголовок:
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
Ответ 6
Вы также можете выбрать использование CSS reset, например normalize.css, который включает то же правило, что и 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%;
}
Как вы видите, в нем также содержится специальное правило поставщика для IE-телефона.
Для получения текущей информации о реализации в разных браузерах см. справочную страницу MDN.
Ответ 7
Следующий код работает для меня.
html{-webkit-text-size-adjust: 100%;}
Попробуйте очистить кеш браузера, если он не работает.
Ответ 8
В моем случае эта проблема возникла из-за того, что я использовал атрибут CSS width: 100%
для HTML-тега input type="text"
.
Я изменил значение width
на 60% и добавил padding-right:38%
.
input {
padding-right: 38%;
width: 60%;
}