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

首頁 > 開發 > JS > 正文

通過JS實現手機等移動端頁面按手機屏幕分辨率自動縮放

2024-09-06 12:41:18
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了通過JS實現手機等移動端頁面按手機屏幕分辨率自動縮放,具有一定的參考價值,感興趣的小伙伴們可以參考一下,有需要的朋友可以收藏方便以后借鑒。


      手機的屏幕有大有小,移動web最好做成響應式布局,也就是自適應屏幕,沒有固定寬高,這樣的話,在所有手機上都可以正常顯示。關于移動端頁面按手機屏幕分辨率自動縮放的js,先附上代碼

<script> var phoneWidth = parseInt(window.screen.width); var phoneHeight = parseInt(window.screen.height); var phoneScale = phoneWidth/750;//除以的值按手機的物理分辨率 var ua = navigator.userAgent; if (/Android (/d+/./d+)/.test(ua)) { var version = parseFloat(RegExp.$1); // andriod 2.3 if (version > 2.3) { document.write('<meta name="viewport" content="width=device-width,initial-scale='+phoneScale+',minimum-scale='+phoneScale+',maximum-scale='+phoneScale+',user-scalable=no">'); // andriod 2.3以上 } else { document.write('<meta name="viewport" content="width=device-width,user-scalable=no">'); } // 其他系統 } else { document.write('<meta name="viewport" content="width=device-width, initial-scale='+phoneScale+',minimum-scale='+phoneScale+',maximum-scale ='+phoneScale +',user-scalable=no,">'); }</script>

概念解析


phys.width:一般我們所指的寬度width即為phys.width,物理寬度(物理分辨率)


device-width:又稱為css-width,設備寬度(邏輯分辨率)


其中我們可以獲取phys.width通過document.documentElement.clientWidth;


而獲取css-width通過 window.screen.width獲取。


所以這里  phoneWidth(邏輯分辨率) = parseInt(window.screen.width);


如iphone6的phys.width為750px,而css-width為375px。


明白一個瀏覽器默認行為。


試想,瀏覽器如果把電腦端的980px的網頁展現在寬度為750px的iphone6手機屏上,勢必會放不下,手機端橫向會出現滾動條,怎么阻止這種情況呢,很簡單,瀏覽器默認一個虛擬窗口,不同瀏覽器有不同的虛擬窗口寬度的默認值如:safari iphone:980px;


opera:850px;


Andriod webkit:800px;


IE:974px;


然后會把這個980px虛擬窗口裝進寬度為750px的iphone6中,當然這樣的話必須縮放,這就是為什么在手機中展現電腦端頁面沒有出現橫向滾動條,而且字跡明顯變小的原因。


initial-scale='+phoneScale+',minimum-scale='+phoneScale+',maximum-scale='+phoneScale+'


這段代碼切記要指定 initial-scale=***,在安卓系統中,不指定默認的nitial-scale=***,只指定最小和最大縮放值,也可以正常顯示,但是safari瀏覽器則會失效,對于寬度是100%的頁面, 則顯示為頁面的30%左右的寬。


target-densitydpi=device-dpi


WebKit內核默認按照160的DPI來排版。假如設備真實DPI是480,寬度是1080,在WebKit會按160DPI,360寬度來排版。排版結束后在放大到1080寬。


所以當取window.innerwidth之類的值的時候,取的是WebKit實際排版寬度360,而不是1080.


target-densitydpi=device-dpi可以強制內核以480DPI排版,使畫面更精細,window.innerwidth也將為屏幕寬度1080.


但WebKit從去年開始取消了對target-densitydpi的支持。(所以現在不建議寫該屬性了)


想實現target-densitydpi=device-dpi的效果有什么方法?

提交此次補丁的WebKit開發者說可以用responsive images 和 CSS device units來替代。


以上就是通過JS實現手機等移動端頁面按手機屏幕分辨率自動縮放的全部內容,希望對大家的學習和解決疑問有所幫助,也希望大家多多支持武林網。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新民市| 鄂温| 梅河口市| 交口县| 临澧县| 淮南市| 临海市| 金坛市| 巧家县| 湖南省| 夹江县| 盐津县| 平南县| 越西县| 湘乡市| 黎川县| 东海县| 丰原市| 荔浦县| 梅州市| 邳州市| 白银市| 成武县| 吉木乃县| 开阳县| 泾阳县| 罗城| 门源| 罗源县| 建水县| 桃园县| 潜江市| 峨边| 冷水江市| 宜宾县| 武强县| 五莲县| 达州市| 宁蒗| 博白县| 五莲县|