国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

使用CSS媒體查詢和JavaScript判斷瀏覽器設備類型的好方法

2024-07-11 08:34:31
字體:
來源:轉載
供稿:網友

有無數的理由要求我們在任何時候都應該知道用戶是使用的什么設備瀏覽我們的網站——寬屏,普通屏,平板,手機?知道這些特征,我們web應用的CSS和JavaScript才能同步做相應的操作。在給Mozilla Developer Networks改版設計的過程中,我發(fā)現使用CSS媒體查詢(media queries)雖然非常的有效,但有時,JavaScript卻不能及時知道用戶瀏覽設備的狀態(tài)。瀏覽網站的用戶使用的是桌面電腦,還是平板,還是手機?這對于CSS來說很容易,但CSS卻無法將這些信息告訴JavaScript。我發(fā)明了一種基于CSS媒體查詢和z-index屬性的方法,能告訴JavaScript用戶當前使用的是什么屏幕,這樣我能調整JavaScript的動作來響應這種屏幕尺寸。

CSS代碼

首先最重要的還是CSS媒體查詢代碼。這里只是示例,我們創(chuàng)建了三個媒體查詢規(guī)則(但不包括缺省的“all”),它能控制四種屏幕情況:桌面(這是缺省狀態(tài),不需要媒體查詢規(guī)則),“小屏幕”,平板,手機。針對每一種屏幕,我們給它一種不同的z-index值,這個值我們可以用JavaScript檢測到。我們把這個元素定位到屏幕外,這樣它就不會顯示出來;記住,它的作用就是存放z-index值,我們要用javaScript獲取這個值。


/* 缺省屏幕 */
.state-indicator {
position: absolute;
top: -999em;
left: -999em;
z-index: 1;
}
/* 小屏幕 */
@media all and (max-width: 1200px) {
.state-indicator {
z-index: 2;
}
}
/* 平板 */
@media all and (max-width: 1024px) {
.state-indicator {
z-index: 3;
}
}
/* 手機 */
@media all and (max-width: 768px) {
.state-indicator {
z-index: 4;
}
}

每種z-index都在告訴我們的JavaScript當前的用戶使用的是什么規(guī)格的屏幕。我們并不像知道用戶究竟使用的是什么設備,因為你可以將瀏覽器寬度拉的很窄,但我們需要就是可視寬度,這樣我們可以調整應用的布局。

JavaScript代碼

也許你認為可以在DomContentLoaded時知道屏幕的大小,但我們需要實時知道屏幕的大小(因為用戶會調整瀏覽器窗口的大小),我們需要有個方法獲取當前窗口的屬性:


// 創(chuàng)建狀態(tài)指示元素
var indicator = document.createElement(‘div’);
indicator.className = ‘state-indicator’;
document.body.appendChild(indicator);
// 獲取設備類別的方法
function getDeviceState() {
return parseInt(window.getComputedStyle(indicator).getPropertyValue(‘z-index’), 10);
}

使用這個方法,你就能檢測出頁面布局/js飾件中那些需要顯示,那些需要隱藏。


if(getDeviceState() < 3) { // 如果是桌面電腦后小屏幕電腦
// 顯示js飾件….
}

有人也許會認為這些數字太容易搞錯,讓代碼很難維護。其實我們可以用一個對象來處理這種事情:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大厂| 措勤县| 江川县| 西充县| 泰顺县| 东乡族自治县| 彭水| 新沂市| 普宁市| 治多县| 锦州市| 原阳县| 本溪| 鄱阳县| 长岭县| 礼泉县| 普宁市| 新乡市| 福清市| 太原市| 洛川县| 崇左市| 清远市| 岳池县| 庆元县| 光山县| 潞西市| 柳河县| 桂东县| 喜德县| 景谷| 葫芦岛市| 灌阳县| 安溪县| 句容市| 吉林省| 房产| 巴林右旗| 紫阳县| 吉林市| 洞头县|