97超碰在线播放|美女自慰免费观看|亚洲无码三四五区|日韩无码分类大全|日本美女在线99|毛片网女人免费看|亚洲国产香蕉av|久久免费看片视频|超碰在线无码一区|玖玖中文字幕在线

284292114@qq.com 中國站
新聞中心 網(wǎng)絡(luò)推廣 網(wǎng)站建設(shè) 優(yōu)化推廣 首頁>新聞中心>優(yōu)化推廣>建網(wǎng)站

JavaScript實(shí)現(xiàn)移動(dòng)端頁面按手機(jī)屏幕分辨率自動(dòng)縮放

時(shí)間:2019-09-16   訪問量:0

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

<script>
 var phoneWidth = parseInt(window.screen.width);
 var phoneHeight = parseInt(window.screen.height);
 var phoneScale = phoneWidth/750;//除以的值按手機(jī)的物理分辨率
 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">');
 }
 // 其他系統(tǒng)
 } else {
 document.write('<meta name="viewport" content="width=device-width, initial-scale='+phoneScale+',minimum-scale='+phoneScale+',maximum-scale ='+phoneScale +',user-scalable=no,">');
 }
</script>


做手機(jī)端頁面醉頭疼的就是物理分辨率和邏輯分辨率的轉(zhuǎn)換了,當(dāng)拿到設(shè)計(jì)圖的時(shí)候,圖基本都是按物理分辨率來設(shè)計(jì)的,一般常用的為640(iphone5/5s)、750(iphone6/6s),而谷歌等瀏覽器采用小手機(jī)模式瀏覽頁面的時(shí)候,上面的值為邏輯分辨率,調(diào)試的時(shí)候很難把控頁面樣式,在手機(jī)端的樣式也會(huì)因此大亂,在頁面頭部加入以上一段js之后,在手機(jī)端就可以正常顯示了,

var phoneScale = phoneWidth/750;

除以的為設(shè)計(jì)圖設(shè)計(jì)的頁面寬度,750是按iphone6來設(shè)計(jì)(根據(jù)自己使用需求來修改),即讓頁面的 放大比率=屏幕的邏輯分辨率/物理分辨率,從而達(dá)到適應(yīng)手機(jī)的效果。

(注意,有時(shí)候頁面加了這段代碼在調(diào)試的時(shí)候,切記刷新,刷新過后就會(huì)按手機(jī)縮放比例顯示)

概念解析:

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

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

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

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

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

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

明白一個(gè)瀏覽器默認(rèn)行為。

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

opera:850px;

Andriod webkit:800px;

IE:974px;

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

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

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

target-densitydpi=device-dpi

WebKit內(nèi)核默認(rèn)按照160的DPI來排版。假如設(shè)備真實(shí)DPI是480,寬度是1080,在WebKit會(huì)按160DPI,360寬度來排版。排版結(jié)束后在放大到1080寬。

所以當(dāng)取window.innerwidth之類的值的時(shí)候,取的是WebKit實(shí)際排版寬度360,而不是1080.

target-densitydpi=device-dpi可以強(qiáng)制內(nèi)核以480DPI排版,使畫面更精細(xì),window.innerwidth也將為屏幕寬度1080.

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

想實(shí)現(xiàn)target-densitydpi=device-dpi的效果有什么方法?提交此次補(bǔ)丁的WebKit開發(fā)者說可以用responsive images 和 CSS device units來替代。


服務(wù)咨詢
1對(duì)1咨詢,專業(yè)客服為您解疑答惑
聯(lián)系銷售
15899750475
在線咨詢
聯(lián)系在線客服,為您解答所有的疑問
ARE YOU INTERESTED IN ?
感興趣嗎?

有關(guān)我們服務(wù)的更多信息,請聯(lián)系項(xiàng)目經(jīng)理

15899750475 楊先生