首頁 > web前端 > js教程 > 主體

JavaScript根據CSS的Media Queries來判斷瀏覽裝置的方法_javascript技巧

WBOY
發布: 2016-05-16 08:59:51
原創
2881 人瀏覽過

css 部分

先隨便新建一個用來做判斷的類,然後透過 media queries 來對這個類別的 z-index 屬性賦予不同的值。這個類別僅作為 javascript 讀取使用,所以需要將其移出螢幕窗口,讓瀏覽者不可見以免造成意外情況。

作為演示,以下程式碼設定了四種裝置狀態:桌面普通版、小螢幕桌面版、平板電腦版和手機版。

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

登入後複製

先創建,然後獲取,最後刪掉這個節點,具體的設備會在你的控制台中輸出,點這裡查看demo ,可以試著拖曳中間的邊框,然後點選run。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板