正在苦逼的實習中,昨天公司讓做一個頁面,涉及到檢測終端的問題,如果是手機裝置,就跳轉到指定的網頁上,以前寫響應式布局隻要用@media screen來實作布局的差異化适應,但是現在不僅僅是布局,還要針對移動端做一些别的動作,是以看了點資料,做個總結
方法一、還是用@media screen
思路:css使用媒體查詢,當螢幕小于760px時,使某個元素的樣式發生改變,然後通過js檢測到這個改變,就可以知道現在切換到移動端了
css代碼:
1 2 3 4 | |
js代碼:
1 2 3 4 5 6 7 8 9 | |
方法二、通過navigator.userAgent字元串檢測
思路:Navigator對象包含有關浏覽器的資訊,通過檢測userAgent字元串,然後使用正規表達式進行比對,我們自然就能知道使用者是否在使用移動端的浏覽器啦
先上個簡化版的,意思意思下
1 2 3 4 5 6 7 8 | |
其實還可以用jQuery,but jQuery 從 1.9 版開始,移除了 $.browser 和 $.browser.version:
1 | |
通過上面那段代碼基本就能檢測到我們能常用的移動終端了,但是後來我在stackoverflow發現一哥們檢測得更加全面牛逼:
1 2 3 4 5 6 7 8 | |
方法三、通過Window.matchMedia()檢測
思路:Window.matchMedia()用來檢查mediaquery語句,扔個MDN的傳送門。它傳回一個MediaQueryList對象。該對象有兩個屬性
media:查詢語句的内容。
matches:如果查詢結果為真,值為true,否則為false
代碼實作如下:
1 2 3 4 5 | |
如果在PC端上使用Window.matchMedia()的話IE10以下是不支援的,但是我們隻是用來檢測終端哈,IE不支援就算了,移動端上安卓3.0以上都沒有問題,so~~
方法四、檢測移動端的TouchEvent事件
思路:使用document.createEvent()建立TouchEvent事件,如果成功那就是移動端了,傳回true,pc端是沒有TouchEvent事件的,是以會出錯,傳回false
代碼實作:
1 2 3 4 5 6 7 8 9 10 11 | |
簡潔友善~~
方法五、使用Device.js庫
這個庫就沒啥好講的了,自己跟着套代碼就OK
github位址 https://github.com/matthewhudson/device.js
不想看英文的孩子,扔個中文教程 https://segmentfault.com/a/1190000000373735