CSS メディア クエリに基づいて閲覧デバイスを決定する JavaScript メソッド_JavaScript スキル

WBOY
リリース: 2016-05-16 08:59:51
オリジナル
2874 人が閲覧しました

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();
});

ログイン後にコピー

まずノードを作成し、次に取得し、最後に削除します。特定のデバイスがコンソールに出力されます (デモ を表示するには、ここをクリックしてください。中央の境界線をドラッグして、[実行] をクリックしてみてください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート