项目上有一个大屏是根据UI的设计稿,已经将宽高固定了,现在要求做适配,这里推荐两款用过的适配插件。

1、v-scale-screen

组件库地址:https://www.npmjs.com/package/v-scale-screen?activeTab=readme

v-scale-screen这个插件利用缩放进行适配,使用起来也非常的简单方便,可支持页面铺满和等比例缩放。

目前有vue2和vue3版本,对应的下载命令如下

//vue2
npm install v-scale-screen@1.0.0

//vue3
npm install v-scale-screen@2.0.0

我这里是vue2版本,所以直接在main.js中引入,注册;然后在需要适配的页面外层套vscalescreen组件,传入宽高即可实现适配,这个插件有一个缺陷,就是如果大屏上有地图,并且地图上有一些点击交互事件,由于缩放的原因,会导致事件偏移。

import VScaleScreen from 'v-scale-screen'
Vue.use(VScaleScreen)
<template>
    <v-scale-screen width="1920" height="1080" fullScreen>
      <div class="screen">
      </div>
    </v-scale-screen>
</template>

2、autofit.js

autofit.js也是一款可以实现自适应的库,更确切来说它是一个封装的很好的工具方法。为什么会选择这个,因为在我的大屏上有地图,地图上有图标并且有点击事件,大屏自适应后会导致事件偏移;而这个方法可以选择哪些dom进行缩放,哪些可以不缩放。

组件地址:https://github.com/Auto-Plugin/autofit.js

文档地址:https://auto-plugin.github.io/index/autofit.js/

这个组件用法非常简单

下载

npm i autofit.js

导入

import autofit from 'autofit.js'

使用

 mounted() {
        autofit.init({
            dh: 1080,
            dw: 1920,
            el:"#app",
            resize: true,
            ignore: [
                {
                    el: "#map_container",//地图容器id
                    // height: window.innerHeight + 'px',//可选,需注明单位
                    // width: window.innerWidth +'px'//可选,需注明单位
                }
            ]
        })
    },

这个工具方法引进来之后,一定要在挂载之后执行,传入对应宽高和dom的id,ignore的作用是忽略缩放的元素(该元素将反向缩放),因为大屏里面有地图,把地图组件的id传进去,就不会让地图进行缩放,最后的事件也不会偏移,点击事件能够正常触发。

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐