废话不多说直接上代码
<template> <div id="app"> <div :style="{ transform: `scale(${zoomIndex})` }" class="routerPage"> <router-view /> </div> </div> </template> <script> export default { name: 'App', data() { return { zoomIndex: 1, }; }, created() { // 3840是设计图所给的宽度 this.zoomIndex = document.documentElement.clientWidth / 3840; this.$store.dispatch('setZoom', this.zoomIndex); window.addEventListener('resize', () => { this.zoomIndex = document.documentElement.clientWidth / 3840; }); }, }; </script> <style scoped> #app { height: 100%; width: 100%; background: #155db9; position: absolute; } .routerPage { position: fixed; transform-origin: 0 0; } </style>
此处还可以继续优化,加个防抖函数,然后再加个beforeDestroyed钩子去销毁这个事件,要提供的思路就是通过css的scale属性,去控制页面的缩放,开发的过程中,所有的单位也只需要是ui所给的单位即可。
