如何解決前端筆記本屏幕顯示縮放比例125%,150%對(duì)頁(yè)面布局的影響
發(fā)現(xiàn)問(wèn)題

win10默認(rèn)設(shè)置150%,對(duì)頁(yè)面布局的影響靠單純的自適應(yīng)是沒(méi)辦法解決的
問(wèn)題出在device-pixel-ratio
解決方案一
css解決(復(fù)制粘貼放在樣式文件中,確保被加載)
@media all and (-moz-min-device-pixel-ratio: 1.09) and (-moz-max-device-pixel-ratio: 1.18),
(-webkit-min-device-pixel-ratio: 1.09) and (-webkit-max-device-pixel-ratio: 1.18),
(min-resolution: 1.09dppx) and (max-resolution: 1.18dppx) {
:root {
font-size: 14px;
}
}
@media all and (-moz-min-device-pixel-ratio: 1.19) and (-moz-max-device-pixel-ratio: 1.28),
(-webkit-min-device-pixel-ratio: 1.19) and (-webkit-max-device-pixel-ratio: 1.28),
(min-resolution: 1.19dppx) and (max-resolution: 1.28dppx) {
:root {
font-size: 13px;
}
}
@media all and (-moz-min-device-pixel-ratio: 1.29) and (-moz-max-device-pixel-ratio: 1.4),
(-webkit-min-device-pixel-ratio: 1.29) and (-webkit-max-device-pixel-ratio: 1.4),
(min-resolution: 1.29dppx) and (max-resolution: 1.4dppx) {
:root {
font-size: 12px;
}
}
@media all and (-moz-min-device-pixel-ratio: 1.41) and (-moz-max-device-pixel-ratio: 1.6),
(-webkit-min-device-pixel-ratio: 1.41) and (-webkit-max-device-pixel-ratio: 1.6),
(min-resolution: 1.41dppx) and (max-resolution: 1.6dppx) {
:root {
font-size: 10px;
}
}
@media all and (-moz-min-device-pixel-ratio: 1.61) and (-moz-max-device-pixel-ratio: 1.8),
(-webkit-min-device-pixel-ratio: 1.61) and (-webkit-max-device-pixel-ratio: 1.8),
(min-resolution: 1.61dppx) and (max-resolution: 1.8dppx) {
:root {
font-size: 9px;
}
}
@media all and (-moz-min-device-pixel-ratio: 1.81) and (-moz-max-device-pixel-ratio: 2.1),
(-webkit-min-device-pixel-ratio: 1.81) and (-webkit-max-device-pixel-ratio: 2.1),
(min-resolution: 1.81dppx) and (max-resolution: 2.1dppx) {
:root {
font-size: 8px;
}
}解決方案二
這種方式會(huì)將頁(yè)面的元素進(jìn)行縮放
js解決(放在入口文件中)
export const detectZoom = () => {
let ratio = 0,
screen = window.screen,
ua = navigator.userAgent.toLowerCase();
if (window.devicePixelRatio !== undefined) {
ratio = window.devicePixelRatio;
} else if (~ua.indexOf('msie')) {
if (screen.deviceXDPI && screen.logicalXDPI) {
ratio = screen.deviceXDPI / screen.logicalXDPI;
}
} else if (
window.outerWidth !== undefined &&
window.innerWidth !== undefined
) {
ratio = window.outerWidth / window.innerWidth;
}
if (ratio) {
ratio = Math.round(ratio * 100);
}
return ratio;
};比如React項(xiàng)目中的app.js
app.js
import { detectZoom } from '@/utils/detectZoom';
// 處理筆記本系統(tǒng)默認(rèn)系統(tǒng)比例為150%帶來(lái)的布局影響
const m = detectZoom();
document.body.style.zoom = 100 / Number(m);補(bǔ)充:什么是媒體查詢中的-device-pixel-ratio
想知道什么是媒體查詢中的-device-pixel-ratio,要先從CSS像素、設(shè)備獨(dú)立像素、設(shè)備像素說(shuō)起。
概念
CSS像素(CSS Pixel):適用于web編程,指的是我們?cè)跇邮酱a中使用到的邏輯像素,是一個(gè)抽象概念,實(shí)際并不存在
設(shè)備獨(dú)立像素(Device Independent Pixel):與設(shè)備無(wú)關(guān)的邏輯像素,代表可以通過(guò)程序控制使用的虛擬像素,是一個(gè)總體概念,包括了CSS像素
設(shè)備像素(Device Pixel):物理像素,設(shè)備能控制顯示的最小單位,我們常說(shuō)的1920×1080像素分辨率就是用的設(shè)備像素單位
關(guān)系
因?yàn)樵O(shè)備獨(dú)立像素是包含了CSS像素的大類,所以我們可以直接討論設(shè)備獨(dú)立像素和設(shè)備像素之前的區(qū)別和聯(lián)系。
首先我們可以做一個(gè)總體總結(jié):
PC端 —— 1個(gè)設(shè)備獨(dú)立像素 = 1個(gè)設(shè)備像素 (在100%,未縮放的情況下,如果縮放到200%可以說(shuō)1個(gè)設(shè)備獨(dú)立像素 = 2個(gè)設(shè)備像素)
移動(dòng)端 —— 根據(jù)設(shè)備不同有很大的差異,根據(jù) ppi 不同我們可以得到不同的換算關(guān)系,標(biāo)準(zhǔn)屏幕(160ppi)下 1個(gè)設(shè)備獨(dú)立像素 = 1個(gè)設(shè)備像素
在詳細(xì)闡述之前我們先介紹兩個(gè)概念:每英寸像素點(diǎn)ppi 和 設(shè)備像素比dpr
ppi (pixel per inch):表示每英寸所包含的像素點(diǎn)數(shù)目,數(shù)值越高,說(shuō)明屏幕能以更高密度顯示圖像
計(jì)算公式——
ppi在120-160之間的手機(jī)被歸為低密度手機(jī),160-240被歸為中密度,240-320被歸為高密度,320以上被歸為超高密度(例如蘋果公司的Retina顯示屏)
dpr(device pixel ratio):設(shè)備像素比,設(shè)備像素/設(shè)備獨(dú)立像素,代表設(shè)備獨(dú)立像素到設(shè)備像素的轉(zhuǎn)換關(guān)系,在JS中可以通過(guò) window.devicePixelRatio 獲取
計(jì)算公式——
知道設(shè)備像素比之后,我們就可以將程序中使用到的CSS像素轉(zhuǎn)換為設(shè)備像素,解決同樣的圖片在不同移動(dòng)終端上顯示存在差異的問(wèn)題。
常見(jiàn)的設(shè)備dpr可以通過(guò) http://screensiz.es/phone 或者 http://devicepixelratio.com/ 查詢,我們下面來(lái)說(shuō)一說(shuō)具體的使用方法。
當(dāng)設(shè)備像素比為1:1時(shí),使用1(1×1)個(gè)設(shè)備像素顯示1個(gè)CSS像素;
當(dāng)設(shè)備像素比為2:1時(shí),使用4(2×2)個(gè)設(shè)備像素顯示1個(gè)CSS像素;
當(dāng)設(shè)備像素比為3:1時(shí),使用9(3×3)個(gè)設(shè)備像素顯示1個(gè)CSS像素。
總結(jié)
到此這篇關(guān)于如何解決前端筆記本屏幕顯示縮放比例125%,150%對(duì)頁(yè)面布局的影響的文章就介紹到這了,更多相關(guān)前端屏幕顯示縮放比例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
bootstrap多層模態(tài)框滾動(dòng)條消失的問(wèn)題
本篇文章主要介紹了bootstrap多層模態(tài)框滾動(dòng)條消失的問(wèn)題,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
利用JavaScript在網(wǎng)頁(yè)實(shí)現(xiàn)八數(shù)碼啟發(fā)式A*算法動(dòng)畫效果
這篇文章主要介紹了利用JavaScript在網(wǎng)頁(yè)實(shí)現(xiàn)八數(shù)碼啟發(fā)式A*算法動(dòng)畫效果,需要的朋友可以參考下2017-04-04
一分鐘學(xué)會(huì)JavaScript中的try-catch
這篇文章主要給大家介紹了關(guān)于如何通過(guò)一分鐘學(xué)會(huì)JavaScript中try-catch的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
node-http-proxy修改響應(yīng)結(jié)果實(shí)例代碼
這篇文章主要介紹了node-http-proxy修改響應(yīng)結(jié)果的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
ES6新特性八:async函數(shù)用法實(shí)例詳解
這篇文章主要介紹了ES6新特性八:async函數(shù)用法,結(jié)合實(shí)例形式分析了async函數(shù)的功能、原理、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04
JavaScript程序員應(yīng)該知道的45個(gè)實(shí)用技巧
在這篇文章中,我將分享一組JavaScript的技巧、竅門和最佳實(shí)踐,這些都是JavaScript程序員應(yīng)該知曉的,不管他們是使用在瀏覽器/引擎上,還是服務(wù)器端(SSJS——Service Side JavaScript)JavaScript解釋器上2014-03-03
Js查找字符串中出現(xiàn)次數(shù)最多的字符及個(gè)數(shù)實(shí)例解析
這篇文章主要介紹了Js查找字符串中出現(xiàn)次數(shù)最多的字符及個(gè)數(shù) ,本文分為傳統(tǒng)寫法和正則寫法兩種方法給大家介紹了js查找字符串出現(xiàn)次數(shù)最多的字符及個(gè)數(shù),非常不錯(cuò),感興趣的朋友參考下吧2016-09-09

