如何解決前端筆記本屏幕顯示縮放比例125%,150%對頁面布局的影響
發(fā)現(xiàn)問題
win10默認設(shè)置150%,對頁面布局的影響靠單純的自適應(yīng)是沒辦法解決的
解決方案一
css解決(復制粘貼放在樣式文件中,確保被加載)
@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; } }
解決方案二
這種方式會將頁面的元素進行縮放
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項目中的app.js
app.js
import { detectZoom } from '@/utils/detectZoom'; // 處理筆記本系統(tǒng)默認系統(tǒng)比例為150%帶來的布局影響 const m = detectZoom(); document.body.style.zoom = 100 / Number(m);
補充:什么是媒體查詢中的-device-pixel-ratio
想知道什么是媒體查詢中的-device-pixel-ratio,要先從CSS像素、設(shè)備獨立像素、設(shè)備像素說起。
概念
CSS像素(CSS Pixel):適用于web編程,指的是我們在樣式代碼中使用到的邏輯像素,是一個抽象概念,實際并不存在
設(shè)備獨立像素(Device Independent Pixel):與設(shè)備無關(guān)的邏輯像素,代表可以通過程序控制使用的虛擬像素,是一個總體概念,包括了CSS像素
設(shè)備像素(Device Pixel):物理像素,設(shè)備能控制顯示的最小單位,我們常說的1920×1080像素分辨率就是用的設(shè)備像素單位
關(guān)系
因為設(shè)備獨立像素是包含了CSS像素的大類,所以我們可以直接討論設(shè)備獨立像素和設(shè)備像素之前的區(qū)別和聯(lián)系。
首先我們可以做一個總體總結(jié):
PC端 —— 1個設(shè)備獨立像素 = 1個設(shè)備像素 (在100%,未縮放的情況下,如果縮放到200%可以說1個設(shè)備獨立像素 = 2個設(shè)備像素)
移動端 —— 根據(jù)設(shè)備不同有很大的差異,根據(jù) ppi 不同我們可以得到不同的換算關(guān)系,標準屏幕(160ppi)下 1個設(shè)備獨立像素 = 1個設(shè)備像素
在詳細闡述之前我們先介紹兩個概念:每英寸像素點ppi 和 設(shè)備像素比dpr
ppi (pixel per inch):表示每英寸所包含的像素點數(shù)目,數(shù)值越高,說明屏幕能以更高密度顯示圖像
計算公式——
ppi在120-160之間的手機被歸為低密度手機,160-240被歸為中密度,240-320被歸為高密度,320以上被歸為超高密度(例如蘋果公司的Retina顯示屏)
dpr(device pixel ratio):設(shè)備像素比,設(shè)備像素/設(shè)備獨立像素,代表設(shè)備獨立像素到設(shè)備像素的轉(zhuǎn)換關(guān)系,在JS中可以通過 window.devicePixelRatio 獲取
計算公式——
知道設(shè)備像素比之后,我們就可以將程序中使用到的CSS像素轉(zhuǎn)換為設(shè)備像素,解決同樣的圖片在不同移動終端上顯示存在差異的問題。
常見的設(shè)備dpr可以通過 http://screensiz.es/phone 或者 http://devicepixelratio.com/ 查詢,我們下面來說一說具體的使用方法。
當設(shè)備像素比為1:1時,使用1(1×1)個設(shè)備像素顯示1個CSS像素;
當設(shè)備像素比為2:1時,使用4(2×2)個設(shè)備像素顯示1個CSS像素;
當設(shè)備像素比為3:1時,使用9(3×3)個設(shè)備像素顯示1個CSS像素。
總結(jié)
到此這篇關(guān)于如何解決前端筆記本屏幕顯示縮放比例125%,150%對頁面布局的影響的文章就介紹到這了,更多相關(guān)前端屏幕顯示縮放比例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用JavaScript在網(wǎng)頁實現(xiàn)八數(shù)碼啟發(fā)式A*算法動畫效果
這篇文章主要介紹了利用JavaScript在網(wǎng)頁實現(xiàn)八數(shù)碼啟發(fā)式A*算法動畫效果,需要的朋友可以參考下2017-04-04node-http-proxy修改響應(yīng)結(jié)果實例代碼
這篇文章主要介紹了node-http-proxy修改響應(yīng)結(jié)果的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06JavaScript程序員應(yīng)該知道的45個實用技巧
在這篇文章中,我將分享一組JavaScript的技巧、竅門和最佳實踐,這些都是JavaScript程序員應(yīng)該知曉的,不管他們是使用在瀏覽器/引擎上,還是服務(wù)器端(SSJS——Service Side JavaScript)JavaScript解釋器上2014-03-03Js查找字符串中出現(xiàn)次數(shù)最多的字符及個數(shù)實例解析
這篇文章主要介紹了Js查找字符串中出現(xiàn)次數(shù)最多的字符及個數(shù) ,本文分為傳統(tǒng)寫法和正則寫法兩種方法給大家介紹了js查找字符串出現(xiàn)次數(shù)最多的字符及個數(shù),非常不錯,感興趣的朋友參考下吧2016-09-09