CSS部分
まず、判定用の新しいクラスを作成し、メディアクエリを使用してこのクラスのz-index属性に異なる値を割り当てます。このクラスは JavaScript の読み取りにのみ使用されるため、予期しない状況を避けるために、画面ウィンドウの外に移動し、ビューアに表示されないようにする必要があります。
デモンストレーションとして、次のコードは、デスクトップの通常バージョン、小画面のデスクトップ バージョン、タブレット バージョン、モバイル バージョンの 4 つのデバイス状態を設定します。
JavaScript は、CSS がすでに配置されていると判断し、JavaScript を使用して一時的な DOM オブジェクトを生成し、それに対応するクラスを設定してから読み取る必要があります。このオブジェクトの z-index 値を再度取得します。ネイティブの記述方法は次のとおりです。
/* default state */.state-indicator { position: absolute; top: -999em; left: -999em; z-index: 1;} /* small desktop */@media all and (max-width: 1200px) { .state-indicator { z-index: 2; }} /* tablet */@media all and (max-width: 1024px) { .state-indicator { z-index: 3; }} /* mobile phone */@media all and (max-width: 768px) { .state-indicator { z-index: 4; }}
このように、次のコードを使用してデバイスのステータスを確認し、対応する JavaScript コードを実行できます。
// Create the state-indicator elementvar indicator = document.createElement('div');indicator.className = 'state-indicator';document.body.appendChild(indicator); // Create a method which returns device statefunction getDeviceState() { return parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10);}getDeviceState() 函数返回的就是 z-index 的值,为了增强一下可读性,可以用 switch 函数来规范输出一下: function getDeviceState() { switch(parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10)) { case 2: return 'small-desktop'; break; case 3: return 'tablet'; break; case 4: return 'phone'; break; default: return 'desktop'; break; }}
ここで jQuery を使用している場合は、次のコードを使用するだけです。