[解決済み] javascriptでデバイスの幅を取得する
2022-05-09 23:51:59
質問
javascriptを使用して、ビューポート幅ではなく、ユーザーのデバイス幅を取得する方法はありますか?
CSSメディアクエリは、私が言えることは、これを提供しています。
@media screen and (max-width:640px) {
/* ... */
}
そして
@media screen and (max-device-width:960px) {
/* ... */
}
これは、横向きのスマートフォンをターゲットにしている場合に有効ですね。例えば、iOSでは
max-width:640px
は、iPhone 4 でもランドスケープモードとポートレートモードの両方をターゲットにします。Androidの場合はそうではないので、この例ではdevice-widthを使用することで、デスクトップデバイスをターゲットにすることなく、両方の方向をターゲットにすることに成功しています。
しかし デバイスの幅に基づいてjavascriptのバインディングを呼び出している場合、私はビューポート幅のテストに制限されているように見える、これは次のように余分なテストを意味します。
if ($(window).width() <= 960 && $(window).height <= 640) { /* ... */ }
デバイスの幅がcssで利用できるというヒントを考えると、これはエレガントではないように思えます。
どうすればいい?
デバイスの画面幅を取得するには
screen.width
プロパティを使用します。
また、時には
window.innerWidth
(モバイル機器では一般的に見られません)、ウィンドウサイズが機器の画面サイズより小さいことが多いデスクトップ・ブラウザを扱う場合は、画面幅のかわりに
一般的に、モバイル機器とデスクトップ・ブラウザーの両方を扱う場合は、次のようにします。
var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueのクラススタイルの使い方の詳細
-
Vueのイベント処理とイベントモディファイアの解説
-
Vueの「データを聴く」原則を解説
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules