私は、基本的にいくつかのテキスト入力を備えた大きなフォームであるモバイルWebページを作成しています。
しかし(少なくとも私のAndroid携帯電話では)、入力をクリックするたびに、ページ全体がそこでズームし、ページの残りの部分が見えなくなります。モバイルWebページでこの種のズームを無効にするHTMLまたはCSSコマンドはありますか?
私は、基本的にいくつかのテキスト入力を備えた大きなフォームであるモバイルWebページを作成しています。
しかし(少なくとも私のAndroid携帯電話では)、入力をクリックするたびに、ページ全体がそこでズームし、ページの残りの部分が見えなくなります。モバイルWebページでこの種のズームを無効にするHTMLまたはCSSコマンドはありますか?
回答:
これはあなたが必要とするすべてであるべきです
<meta
name='viewport'
content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0'
/>
width=device-width
最初のメタタグですでに?
パーティーに遅れる人のために、kgutteridgeの答えは私にはうまくいきません、そしてBenny Neugebauerの答えはtarget-densitydpi(非推奨となっている機能)を含みます。
しかし、これは私にとってはうまくいきます:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
ここにはいくつかのアプローチがあります。通常、ユーザー補助のためのズームに関してユーザーを制限するべきではないという立場ですが、必要な場合があります。
デバイスの幅でページをレンダリングします。スケーリングはしません。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
スケーリングを防止し、ユーザーがズームできないようにします。
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
すべてのズーム、すべてのスケーリングを削除する
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
以下を使用できます。
<head>
<meta name="viewport" content="target-densitydpi=device-dpi, initial-scale=1.0, user-scalable=no" />
...
</head>
ただし、Android 4.4では、プロパティtarget-densitydpiはサポートされなくなったことに注意してください。したがって、Android 4.4以降の場合、ベストプラクティスとして次のことをお勧めします。
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
最初の問題の解決策はまだないので、ここに私の純粋なCSS 2セントを示します。
モバイルブラウザー(ほとんどのブラウザー)では、入力のfont-sizeを16pxにする必要があります。そう
input[type="text"],
input[type="number"],
input[type="email"],
input[type="tel"],
input[type="password"] {
font-size: 16px;
}
問題を解決します。したがって、サイトのズーム機能とルーズアクセシビリティ機能を無効にする必要はありません。
ベースのフォントサイズが16pxでもモバイルでも16pxでもない場合は、メディアクエリを使用できます。
@media screen and (max-width: 767px) {
input[type="text"],
input[type="number"],
input[type="email"],
input[type="tel"],
input[type="password"] {
font-size: 16px;
}
}
font-size: 1rem
ページ全体に設定することもできるので、フォントは適切に拡大縮小され、同時に「フォーカスオンズーム」の問題を回避できます。
このメタタグとスタイルを追加してみてください
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/>
<style>
body{
touch-action: manipulation;
}
</style>
touch-action: manipulation;
はうまくいきました。touch-action: none;
何もし
index.htmlにメタタグを追加するだけでは、ページのズームが妨げられないようです。以下のスタイルを追加すると魔法がかかります。
:root {
touch-action: pan-x pan-y;
height: 100%
}
編集:デモ:https : //no-mobile-zoom.stackblitz.io
Webアプリの考えられる解決策:iOS Safariではズームを無効にできなくなりましたが、ホーム画面のショートカットからサイトを開くとズームが無効になります。
次のメタタグを追加して、アプリを「Webアプリ対応」として宣言します。
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/>
<meta name='apple-mobile-web-app-capable' content='yes' />
ただし、この機能は、アプリが自動継続している場合にのみ使用してください。前方/後方ボタンとURLバー、および共有オプションが無効になっています。(ただし、左右にスワイプすることもできます)ただし、このアプローチではuxのようなアプリをかなり有効にできます。フルスクリーンブラウザーは、サイトがホームスクリーンから読み込まれたときにのみ起動します。また、ルートフォルダーにapple-touch-icon-180x180.pngを含めて初めて機能しました。
おまけとして、おそらくこれのバリエーションも含める必要があります。
<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent'/>