最新做了一個網站,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代碼中有一部分代碼判斷無效的情況,不知道什么原因,需要分開判斷。有知道原因的請留言,有更完美的代碼請提供,謝謝。