JavaScript根據(jù)CSS的Media Queries來判斷瀏覽設(shè)備的方法
來源:易賢網(wǎng) 閱讀:620 次 日期:2016-07-01 14:33:26
溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript根據(jù)CSS的Media Queries來判斷瀏覽設(shè)備的方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了JavaScript根據(jù)CSS的Media Queries來判斷瀏覽設(shè)備的方法,主要思路是通過CSS Media Queries改變一個類的某個屬性值(例如 z-index),然后用JavaScript讀取判斷,需要的朋友可以參考下

CSS 部分

首先隨便新建一個用來做判斷的類,然后通過 Media Queries 來對這個類的 z-index 屬性賦予不同的值。這個類僅作為 JavaScript 讀取使用,所以需要將其移出屏幕窗口,讓瀏覽者不可見以免引起意外情況。

作為演示,下面代碼設(shè)置了四種設(shè)備狀態(tài):桌面普通版、小屏幕桌面版、平板電腦版和手機版。

/* 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 已經(jīng)就位了,那么就需要用 JavaScript 來生成了一個臨時的 DOM 對象,然后為它設(shè)置對應(yīng)的類,然后再讀取這個對象的 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() 函數(shù)返回的就是 z-index 的值,為了增強一下可讀性,可以用 switch 函數(shù)來規(guī)范輸出一下:

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;

  }

}

這樣,就可以用一下代碼來判斷設(shè)備狀態(tài),然后執(zhí)行相應(yīng)的 JavaScript 代碼:

if(getDeviceState() == 'tablet') {

  // 平板電腦下執(zhí)行的 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();

});

先創(chuàng)建,然后獲取,最后刪掉這個節(jié)點,具體的設(shè)備會在你的控制臺中輸出,可以試著拖動一下中間的邊框,然后點擊 Run。

更多信息請查看網(wǎng)絡(luò)編程

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)