等比缩放页面,是大屏开发里比较常用的方式了。一般设计图按大屏的尺寸设计,按尺寸开发,最后等比缩放。
大屏等比缩放,在layout.vue里面做控制。
layout.vue
主要是在 app-wrapper 所在div进行scale。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <template> <div> <div class="app-wrapper" :style="{ transformOrigin: 'center top', transform: `scale(${scalseNum},${scalseNum})`, '-webkit-transform': `scale(${scalseNum},${scalseNum})`, '-moz-transform': `scale(${scalseNum},${scalseNum})`, '-o-transform': `scale(${scalseNum},${scalseNum})`, '-ms-transform': `scale(${scalseNum},${scalseNum})`, }" > <app-head></app-head> <app-main /> </div> </div> </template>
|
scale的比例按照实际屏幕宽与1366的比例计算,如果设计图是按照别的尺寸做的,例如 1920x1080、3840*2160(4K)屏等等,在下面代码的 resize_window 方法设置对应宽度就行。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <script> import { AppMain, AppHead } from './components'
export default { name: 'Layout', components: { AppMain, AppHead, }, data() { return { scalseNum: 1, } }, computed: {}, mounted() { this.resize_window() window.addEventListener('resize', () => { this.resize_window() }) }, methods: { resize_window() { let w_width = Number(document.documentElement.clientWidth / 1366) this.scalseNum = w_width }, }, } </script>
|
工程代码
整个项目的代码在下面地址,参考commit就懂过程了
大屏开发框架工程代码