pc網站在手機端適配js代碼實現


最新做了一個網站,PC端沒有問題,但是使用手機端瀏覽器打開網站就會出現圖片兼容性問題,並且顯示的默認尺寸都比較大。

經過百度,發現需要使用<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">,重點是device-width和initial-scale的值,不同手機設備的寬度device-width都不同,initial-scale的值也要跟着變化,即initial-scale = device-width / 頁面寬度(CSS中定義的整個網站頁面寬度,我的網站寬度是1200px),所以需要把initial-scale的值根據不同手機端設備的分辨率寬度來計算,做成一個變量。我就想到了使用js代碼來自動獲取手機端設備的寬度,並使用js代碼判斷手機端瀏覽器類型。

代碼如下(僅供參考):

  1 /***********************************************************
  2     Filename: js/pc.js
  3     Note    : pc、手機、平板終端判斷
  4     Version : 1.0
  5     Web     : www.xxx.com
  6     Author  : wangyong
  7     Update  : 2019年12月30日
  8     PS:關鍵點為initial-scale值,需要獲取移動設備的寬度,initial-scale = 設備寬度 / 網站頁面寬度
  9 ***********************************************************/
 10 
 11 var deviceWidth = parseInt(window.screen.width);  //獲取當前設備的屏幕寬度 ,筆記本的屏幕寬度是1366
 12 
 13 //alert("deviceWidth:" + deviceWidth );
 14 
 15 var deviceScale = deviceWidth / 1200;  //得到當前設備屏幕與1200之間的比例,之后我們就可以將網頁寬度固定為1200px 
 16 //alert("deviceScale:" + deviceScale );
 17     
 18 var os = function (){
 19     var ua = navigator.userAgent,
 20     isWindowsPhone = /(?:Windows Phone)/.test(ua),
 21     isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,
 22     isAndroid = /(?:Android)/.test(ua),
 23     isFireFox = /(?:Firefox)/.test(ua),
 24     isChrome = /(?:Chrome|CriOS)/.test(ua),
 25     isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),
 26     isPhone = /(?:iPhone)/.test(ua) && !isTablet,
 27     isPc = !isPhone && !isAndroid && !isSymbian;
 28     return {
 29         isTablet: isTablet,
 30         isPhone: isPhone,
 31         isAndroid: isAndroid,
 32         isPc: isPc
 33     };    
 34 }();
 35 
 36 /*
 37 //注釋部分有時候對iphone無效
 38 if (!os.isPc) 
 39     {
 40         
 41         document.write('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1" />');        //替換變量deviceScale        
 42         document.write('<meta name="apple-mobile-web-app-capable" content="yes">');
 43         document.write('<meta name="full-screen" content="yes">');
 44         document.write('<meta name="x5-fullscreen" content="true">');
 45         alert('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1.0" />');
 46     }
 47 else if (os.isPc) 
 48 {
 49         document.write('<meta name="viewport" content="width=device-width,initial-scale=1">');
 50 }
 51 else if (os.isTablet) 
 52 {
 53         alert('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1.0" />111');
 54         document.write('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1" />');        //替換變量deviceScale
 55         
 56         document.write('<meta name="apple-mobile-web-app-capable" content="yes">');
 57         document.write('<meta name="full-screen" content="yes">');
 58         document.write('<meta name="x5-fullscreen" content="true">');
 59         
 60 }
 61 */
 62 
 63 //經過調式,需要分別判斷進行頁面初始值initial-scale適配,安卓、iphone、ipad均調式通過
 64 if (os.isAndroid)
 65     {   
 66         document.write('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1">');        //替換變量deviceScale
 67         document.write('<meta name="apple-mobile-web-app-capable" content="yes">');
 68         document.write('<meta name="full-screen" content="yes">');
 69         document.write('<meta name="x5-fullscreen" content="true">');
 70         document.write('<meta name="format-detection" content ="telephone=yes">');
 71         alert('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1.0" />isAndroid');
 72 
 73     } 
 74 else if(os.isPhone)
 75     {
 76         document.write('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1">');        //替換變量deviceScale
 77         document.write('<meta name="apple-mobile-web-app-capable" content="yes">');
 78         document.write('<meta name="full-screen" content="yes">');
 79         document.write('<meta name="x5-fullscreen" content="true">');        
 80         document.write('<meta name="format-detection" content ="telephone=yes" />');
 81         //alert('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1.0" />isPhone');
 82 
 83     } 
 84 else if (os.isTablet)
 85     {
 86         document.write('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1">');                //替換變量deviceScale
 87         document.write('<meta name="apple-mobile-web-app-capable" content="yes">');
 88         document.write('<meta name="full-screen" content="yes">');
 89         document.write('<meta name="x5-fullscreen" content="true">');
 90         //alert('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1.0" />isTablet');
 91     } 
 92 else if (os.isPc) 
 93     {
 94         document.write('<meta name="viewport" content="width=device-width,initial-scale=1">');
 95         document.write('<meta name="format-detection" content ="telephone=no">');
 96         //alert("ispc" );
 97     }
 98 else
 99     {
100         document.write('<meta name="viewport" content="width=device-width,initial-scale=' + deviceScale + ',maximum-scale=1">');                
101     }

上面js代碼中有一部分代碼判斷無效的情況,不知道什么原因,需要分開判斷。有知道原因的請留言,有更完美的代碼請提供,謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM