css セクション
まず、判断を行うための新しいクラスを作成し、メディア クエリを使用してこのクラスの z-index 属性に異なる値を割り当てます。このクラスは javascript の読み取りにのみ使用されるため、予期しない状況を避けるために、画面ウィンドウの外に移動し、ビューアに表示されないようにする必要があります。
デモンストレーションとして、次のコードは、通常のデスクトップ バージョン、小画面デスクトップ バージョン、タブレット バージョン、モバイル バージョンの 4 つのデバイス状態を設定します。
/* 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 の判定
css はすでに配置されているため、javascript を使用して一時的な dom オブジェクトを生成し、それに対応するクラスを設定して、このオブジェクトの z-index 値を読み取る必要があります。本来の書き方は以下の通りです。
// create the state-indicator element var indicator = document.createelement('div'); indicator.classname = 'state-indicator'; document.body.appendchild(indicator); // create a method which returns device state function 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; } }
このようにして、次のコードを使用してデバイスのステータスを確認し、対応する javascript コードを実行できます。
if(getdevicestate() == 'tablet') { // 平板电脑下执行的 javascript 代码 }
ここで jquery を使用している場合は、次のコードを使用するだけです。
$(function(){ $('body').append('<div class="state-indicator"></div>'); function getDeviceState() { switch(parseInt($('.state-indicator').css('z-index'),10)) { case 2: return 'small-desktop'; break; case 3: return 'tablet'; break; case 4: return 'phone'; break; default: return 'desktop'; break; } } console.log(getDeviceState()); $('.state-indicator').remove(); });
まずノードを作成し、次に取得し、最後に削除します。特定のデバイスがコンソールに出力されます (デモ を表示するには、ここをクリックしてください。中央の境界線をドラッグして、[実行] をクリックしてみてください。