笔记本默认设置125%或者150%缩放,导致布局错乱的解决方法

目录

一:为什么会出现有这个问题?

二:有什么解决方案?

三:vue项目utils下新建js

四:全局导入App.vue

五:重新进入项目

六:注意事项

一:为什么会出现有这个问题?

因为现在很多14寸的笔记本,出厂默认就是150%的显示。导致很多时候我们的项目,自己开发的时候都是按照100%比例来开发的,上线了就会发现这个问题。

二:有什么解决方案?

1.REM行不行?

2.vw行不行

3.百分比行不行?

都试过了,都没办法统一,所以有现在这个方案。

三:vue项目utils下新建js

1、文件名 devicePixelRatio.js

class DevicePixelRatio {

//获取系统类型

_getSystem() {

const agent = navigator.userAgent.toLowerCase();

//现只针对windows处理,其它系统暂无该情况,如有,继续在此添加

if (agent.indexOf('windows') >= 0) {

return true;

}

}

//监听方法兼容写法

_addHandler(element, type, handler) {

if (element.addEventListener) {

element.addEventListener(type, handler, false);

} else if (element.attachEvent) {

element.attachEvent('on' + type, handler);

} else {

element['on' + type] = handler;

}

}

//校正浏览器缩放比例

_correct() {

//页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化。

const size = 1 / window.devicePixelRatio;

const size2 = 100 / size + '%';

document.getElementsByTagName('body')[0].style.transform = 'scale(' + size + ')';

document.getElementsByTagName('body')[0].style.transformOrigin = '0 0';

document.getElementsByTagName('body')[0].style.width = size2;

document.getElementsByTagName('body')[0].style.height = size2;

}

//监听页面缩放

_watch() {

this._addHandler(window, 'resize', () => {

//注意这个方法是解决全局有两个window.resize

//重新校正

this._correct();

});

}

//初始化页面比例

init() {

if (this._getSystem()) {

//判断设备,目前只在windows系统下校正浏览器缩放比例

//初始化页面校正浏览器缩放比例

this._correct();

//开启监听页面缩放

this._watch();

}

}

}

export default DevicePixelRatio;

2、文件名 devicePixelRatio.ts

class DevicePixelRatio {

//获取系统类型

_getSystem() {

return true;

// const agent = navigator.userAgent.toLowerCase();

//现只针对windows处理,其它系统暂无该情况,如有,继续在此添加

// if (agent.indexOf('windows') >= 0) {

// return true;

// }

}

//监听方法兼容写法

_addHandler(element, type, handler) {

if (element.addEventListener) {

element.addEventListener(type, handler, false);

} else if (element.attachEvent) {

element.attachEvent('on' + type, handler);

} else {

element['on' + type] = handler;

}

}

//校正浏览器缩放比例

_correct() {

//页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化。

const size = 1 / window.devicePixelRatio;

const size2 = 100 / size + '%';

(document.getElementById('wlg') as any).style.transform = 'scale(' + size + ')';

(document.getElementById('wlg') as any).style.transformOrigin = '0 0';

(document.getElementById('wlg') as any).style.width = size2;

(document.getElementById('wlg') as any).style.height = size2;

}

//监听页面缩放

_watch() {

this._addHandler(window, 'resize', () => {

//注意这个方法是解决全局有两个window.resize

//重新校正

this._correct();

});

}

//初始化页面比例

init() {

if (this._getSystem()) {

//判断设备,目前只在windows系统下校正浏览器缩放比例

//初始化页面校正浏览器缩放比例

this._correct();

//开启监听页面缩放

this._watch();

}

}

}

export default DevicePixelRatio;

四:全局导入App.vue

五:重新进入项目

发现不管怎么缩放,125%还是150%,页面都不会去缩放了,就不会出现错乱的问题了

六:注意事项

没有做兼容mac系统噢