JavaScript根據(jù)CSS的Media Queries來(lái)判斷瀏覽設(shè)備的方法
CSS 部分
首先隨便新建一個(gè)用來(lái)做判斷的類,然后通過(guò) Media Queries 來(lái)對(duì)這個(gè)類的 z-index 屬性賦予不同的值。這個(gè)類僅作為 JavaScript 讀取使用,所以需要將其移出屏幕窗口,讓瀏覽者不可見(jiàn)以免引起意外情況。
作為演示,下面代碼設(shè)置了四種設(shè)備狀態(tài):桌面普通版、小屏幕桌面版、平板電腦版和手機(jī)版。
/* 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 來(lái)生成了一個(gè)臨時(shí)的 DOM 對(duì)象,然后為它設(shè)置對(duì)應(yīng)的類,然后再讀取這個(gè)對(duì)象的 z-index 值。原生的寫(xiě)法如下:
// 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 的值,為了增強(qiáng)一下可讀性,可以用 switch 函數(shù)來(lái)規(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; } }
這樣,就可以用一下代碼來(lái)判斷設(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)建,然后獲取,最后刪掉這個(gè)節(jié)點(diǎn),具體的設(shè)備會(huì)在你的控制臺(tái)中輸出,點(diǎn)擊這里查看 Demo ,可以試著拖動(dòng)一下中間的邊框,然后點(diǎn)擊 Run。
相關(guān)文章
用JS動(dòng)態(tài)設(shè)置CSS樣式常見(jiàn)方法小結(jié)(推薦)
本文給大家總結(jié)了js動(dòng)態(tài)設(shè)置css樣式的常見(jiàn)方法,非常實(shí)用,對(duì)js設(shè)置css樣式相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-11-11js使用ajax傳值給后臺(tái),后臺(tái)返回字符串處理方法
今天小編就為大家分享一篇js使用ajax傳值給后臺(tái),后臺(tái)返回字符串處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08微信小程序12行js代碼自己寫(xiě)個(gè)滑塊功能(推薦)
這篇文章主要介紹了微信小程序12行js代碼自己寫(xiě)個(gè)滑塊功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07JavaScript中Math對(duì)象相關(guān)知識(shí)全解
Math對(duì)象中的方法很常用,來(lái)跟我一起看看吧,下面這篇文章主要給大家介紹了關(guān)于JavaScript中Math對(duì)象相關(guān)知識(shí)全解的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11js動(dòng)態(tài)設(shè)置div的值下例子
設(shè)置div的值想必大家都會(huì)吧,按要說(shuō)動(dòng)態(tài)設(shè)置想必知道的人及寥寥無(wú)幾了,下面有個(gè)不錯(cuò)的示例,希望對(duì)大家有所幫助2013-10-10純JS實(shí)現(xiàn)表單驗(yàn)證實(shí)例
這篇文章主要介紹了純JS實(shí)現(xiàn)表單驗(yàn)證實(shí)例,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12JavaScript的Number對(duì)象的toString()方法
toString()方法可以把Number對(duì)象轉(zhuǎn)換成字符串,并返回此字符串,本文給大家介紹JavaScript的Number對(duì)象的toString()方法,對(duì)javascript對(duì)象方法相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12