UNPKG

vue-auto-scale

Version:
118 lines (85 loc) 3.42 kB
# vue-auto-scale ## 介绍 基于 Vue 3 的大屏适配缩放组件,按设计稿尺寸将内容整体缩放以适配不同视口。 ## 环境与版本 | 说明 | 版本 | |------|------| | 当前包 | **Vue 3**(与仓库中 `vue` 版本一致) | | TypeScript 类型 | 请使用 **1.x** | | 仅 JavaScript、旧项目 | 可使用 **0.2.x** | 若仍在使用 **Vue 2.7 以下**,需自行安装 `@vue/composition-api`;**Vue 2.7+** 已内置组合式 API。 ## 安装 ```bash npm i vue-auto-scale -S ``` ```bash yarn add vue-auto-scale ``` ```bash pnpm add vue-auto-scale ``` ## 使用说明 **请将页面布局单位统一为 `px`(百分比等不受影响)。** ### 按需引入(推荐) ```vue <template> <VueAutoScale :width="1920" :height="1080" :delay="100" :scale-type="scaleType" :reverse-scaling-ids="['#div2']" @change="scaleChange" > <div class="my-demo"> <!-- 不需要随整体缩放的区域(如地图),也可用选择器指向内部节点 --> <div id="div2"></div> </div> </VueAutoScale> </template> <script setup lang="ts"> import { VueAutoScale } from 'vue-auto-scale' const scaleType = 1 const scaleChange = (scale: number | string, scale1: number | string) => { console.log('当前缩放比例', scale) console.log('反向缩放比例(用于抵消子元素)', scale1) } </script> ``` ### 全局注册 ```ts import { createApp } from 'vue' import VueAutoScalePlugin from 'vue-auto-scale' import App from './App.vue' const app = createApp(App) app.use(VueAutoScalePlugin) app.mount('#app') ``` 注册后可在任意模板中使用 `<vue-auto-scale>`(与按需引入时标签名一致,以构建结果为准)。 ## 属性(Props) 以上参数均支持响应式更新。 | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `width` | `number` | `1920` | 设计稿宽度(px) | | `height` | `number` | `1080` | 设计稿高度(px) | | `delay` | `number` | `100` | 窗口尺寸变化时防抖延迟(ms) | | `scaleType` | `number` | `1` | 缩放策略,见下表 | | `reverseScalingIds` | `string \| string[] \| null` | `null` | 不参与整体缩放的子节点,见下方说明 | | `parent` | `boolean` | `false` | 为 `true` 时,按**父元素**尺寸计算缩放,而非整窗;并会监听父元素尺寸变化 | ### scaleType 取值 | 值 | 含义 | |----|------| | `1` | 强制铺满(宽、高分别缩放,可能拉伸) | | `2` | 按比例缩放(取较小比例,内容不变形,可能留边) | | `3` | 适应宽度 | | `4` | 适应高度 | ### reverseScalingIds 内部通过 `document.querySelector` 查找节点,请传入 **合法的 CSS 选择器**(例如 `#id``.class`),不限于 id。可为单个字符串或字符串数组。 用于地图等需要保持「视觉像素」或需单独抵消 `scale` 的区域时,组件会对匹配元素设置宽高与 `transform`,以与外层缩放配合。 ## 事件 | 事件名 | 参数 | 说明 | |--------|------|------| | `change` | `(scale, scale1)` | `scale` 为当前应用的缩放(类型 1 时可能为逗号分隔的 `x,y` 字符串);`scale1` 为用于子元素反向补偿的缩放比例 | ## 仓库与反馈 - 主页:<https://gitee.com/strivelei/vue-auto-scale> 若有其他需求或问题,欢迎在 Gitee 上提 Issue,后续会持续新增与优化。