Commit 005c0212 authored by 朱国瑞's avatar 朱国瑞

处理缩放

parent 8d328995
/**
* @description 校正windows页面在系统进行缩放后导致页面被放大的问题,通常放大比例是125%、150%
* **/
class DevicePixelRatio {
constructor() {}
//获取系统类型
_getSystem() {
let flag = false;
var agent = navigator.userAgent.toLowerCase();
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() {
let t = this;
//页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化。
document.getElementById('main').style.zoom = 1 / window.devicePixelRatio;
}
//监听页面缩放
_watch() {
let t = this;
t._addHandler(window, 'resize', function () { //注意这个方法是解决全局有两个window.resize
//重新校正
t._correct()
})
}
//初始化页面比例
init() {
let t = this;
if (t._getSystem()) { //判断设备,目前只在windows系统下校正浏览器缩放比例
//初始化页面校正浏览器缩放比例
t._correct();
//开启监听页面缩放
t._watch();
}
}
}
export default DevicePixelRatio;
\ No newline at end of file
<template> <template>
<div class="page" :class="{'mobile':_isMobile,'pc':!_isMobile}"> <div class="page" :class="{'mobile':_isMobile,'pc':!_isMobile}">
<div class="main_content"> <div class="main_content" id="main">
<img class="page-bg" src="../assets/images/gesture/massage-entry-fullbg.png" alt srcset /> <img class="page-bg" src="../assets/images/gesture/massage-entry-fullbg.png" alt srcset />
<div class="massage-complete-modal noBaby"> <div class="massage-complete-modal noBaby">
<div class="title"> <div class="title">
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
</div> </div>
<!-- <div class="record" v-if="finalBabyStatus != 3 && finalBabyStatus != -1"> <!-- <div class="record" v-if="finalBabyStatus != 3 && finalBabyStatus != -1">
<div>{{$t('strings.completeText2')}}: {{time}}s</div> <div>{{$t('strings.completeText2')}}: {{time}}s</div>
</div> --> </div>-->
<div class="bottom"> <div class="bottom">
<light-button @click="goHome" :text="$t('strings.completeButtonText')"></light-button> <light-button @click="goHome" :text="$t('strings.completeButtonText')"></light-button>
</div> </div>
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
<script> <script>
import { calcAdapt, isMobile } from "../common/util"; import { calcAdapt, isMobile } from "../common/util";
import lightButton from "../components/lightButton.vue"; import lightButton from "../components/lightButton.vue";
import DevicePixelRatio from "../utils/evicePixelRatio.js";
let calcs = calcAdapt(); let calcs = calcAdapt();
let scale; let scale;
...@@ -89,7 +90,11 @@ export default { ...@@ -89,7 +90,11 @@ export default {
this.time = time || 0; this.time = time || 0;
this.total = total || 0; this.total = total || 0;
}, },
mounted() {} mounted() {
this.$nextTick(() => {
new DevicePixelRatio().init();
});
}
}; };
</script> </script>
......
<template> <template>
<div class="page" :class="{'mobile':_isMobile,'pc':!_isMobile}"> <div class="page" :class="{'mobile':_isMobile,'pc':!_isMobile}">
<div class="main_content" :class="{'small':_isMobile && isSmall,'big':_isMobile && isBig}"> <div class="main_content" id="main" :class="{'small':_isMobile && isSmall,'big':_isMobile && isBig}">
<div class="top" :class="{'small':_isMobile && isSmall,'big':_isMobile && isBig}" :style="{'height':topHeiht}"> <div class="top" :class="{'small':_isMobile && isSmall,'big':_isMobile && isBig}" :style="{'height':topHeiht}">
<div class="page_title">{{$t('strings.homeTitle')}}</div> <div class="page_title">{{$t('strings.homeTitle')}}</div>
<div class="picture-box" :style="{'transform': scale>0?'scale('+scale+')':''}"> <div class="picture-box" :style="{'transform': scale>0?'scale('+scale+')':''}">
...@@ -51,6 +51,7 @@ import { ...@@ -51,6 +51,7 @@ import {
getSystemInfo getSystemInfo
} from "../common/util"; } from "../common/util";
import lightButton from "../components/lightButton.vue"; import lightButton from "../components/lightButton.vue";
import DevicePixelRatio from "../utils/evicePixelRatio.js";
let calcs = calcAdapt(); let calcs = calcAdapt();
let scale; let scale;
...@@ -666,6 +667,9 @@ export default { ...@@ -666,6 +667,9 @@ export default {
} }
}, },
mounted() { mounted() {
this.$nextTick(() => {
new DevicePixelRatio().init();
});
window.onresize = () => { window.onresize = () => {
return (() => {})(); return (() => {})();
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment