vfit
v1.0.6
Published
A tiny Vue 3 plugin to auto-fit UI scale based on container size, plus a FitContainer component for easy positioning.
Maintainers
Readme
vfit
官网:https://web-vfit.netlify.app
作者:一颗烂土豆
Vue 3 的轻量缩放与定位解决方案。通过插件提供全局缩放值,并内置 FitContainer 组件,让页面元素在不同分辨率下保持比例与位置一致。
安装与初始化
npm i vfit// main.ts
import { createFitScale } from 'vfit'
import 'vfit/style.css'
app.use(createFitScale({ target: '#app', designHeight: 1080, designWidth: 1920, scaleMode: 'auto' }))快速上手
- 父容器需设置定位属性:
position: relative(推荐)或absolute - 两种坐标单位:
%:位置不随缩放变化,适合居中/相对位置px:位置随缩放乘积变化,适合固定像素布局
居中(百分比)
<template>
<div class="viewport">
<FitContainer :top="50" :left="50" unit="%">
<div class="card">内容</div>
</FitContainer>
</div>
</template>
<style scoped>
.viewport { position: relative; width: 100%; height: 100vh; }
.card { transform: translate(-50%, -50%); }
</style>要点:top/left 为百分比时,位置不受缩放影响;仅内部内容按比例缩放。
像素定位(随缩放)
<template>
<div class="viewport">
<FitContainer :top="90" :left="90" unit="px">
<div class="box">内容</div>
</FitContainer>
</div>
</template>
<style scoped>
.viewport { position: relative; width: 100%; height: 100vh; }
.box { width: 120px; height: 80px; }
</style>要点:容器缩放后,像素坐标会乘以缩放值(如 left * scale)。
API 精简版
createFitScale({ target?, designHeight?, designWidth?, scaleMode? })target:监听缩放的容器(默认#app)designHeight:设计稿高度(默认1080)designWidth:设计稿宽度(默认1920)scaleMode:'height' | 'width' | 'auto'(默认auto)height:按高度缩放,比例为容器高度 / 设计稿高度width:按宽度缩放,比例为容器宽度 / 设计稿宽度auto:根据容器宽高比与设计比(设计稿宽度 / 设计稿高度)自动选择按宽或按高
useFitScale():在组件内获取当前缩放值Ref<number>FitContainer组件属性:top/bottom/left/right?: numberunit?: 'px' | '%'(默认px)scale?: number(覆盖全局缩放)
小贴士
- 使用
unit='px'时,top/left随缩放变化,right/bottom保持实际像素距离不变 - 使用
right时,缩放原点为右上角;同时设置bottom与right时为右下角 - 首次接入时,务必引入样式:
import 'vfit/style.css'
React 支持
该库的 React 版本请访问 vfit-react。
