vfit 0.1.6 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -60
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -1,94 +1,78 @@
|
|
|
1
1
|
# vfit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Vue 3 的轻量缩放与定位解决方案。通过插件提供全局缩放值,并内置 `FitContainer` 组件,让页面元素在不同分辨率下保持比例与位置一致。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 安装与初始化
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
npm i vfit
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
> 注意:需要同时引入样式文件
|
|
12
|
-
|
|
13
11
|
```ts
|
|
12
|
+
// main.ts
|
|
14
13
|
import { createFitScale } from 'vfit'
|
|
15
14
|
import 'vfit/style.css'
|
|
16
15
|
|
|
17
16
|
app.use(createFitScale({ target: '#app', designHeight: 1080 }))
|
|
18
17
|
```
|
|
19
18
|
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
`FitContainer` 支持两种坐标单位:`%` 与 `px`
|
|
19
|
+
## 快速上手
|
|
23
20
|
|
|
24
|
-
-
|
|
25
|
-
-
|
|
21
|
+
- 父容器需设置定位属性:`position: relative`(推荐)或 `absolute`
|
|
22
|
+
- 两种坐标单位:
|
|
23
|
+
- `%`:位置不随缩放变化,适合居中/相对位置
|
|
24
|
+
- `px`:位置随缩放乘积变化,适合固定像素布局
|
|
26
25
|
|
|
27
|
-
###
|
|
26
|
+
### 居中(百分比)
|
|
28
27
|
|
|
29
28
|
```vue
|
|
30
29
|
<template>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
</FitContainer>
|
|
30
|
+
<div class="viewport">
|
|
31
|
+
<FitContainer :top="50" :left="50" unit="%">
|
|
32
|
+
<div class="card">内容</div>
|
|
33
|
+
</FitContainer>
|
|
34
|
+
</div>
|
|
37
35
|
</template>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
说明:
|
|
41
|
-
- `top/left` 使用百分比时,定位不会因缩放变化而改变;缩放仅影响内部内容的尺寸
|
|
42
|
-
- 通过 `translate(-50%, -50%)` 将内容以中心对齐,这种写法在缩放时也保持中心位置
|
|
43
|
-
|
|
44
|
-
### 使用 `px`(固定像素布局)
|
|
45
36
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<!-- 你的内容 -->
|
|
51
|
-
</FitContainer>
|
|
52
|
-
</template>
|
|
37
|
+
<style scoped>
|
|
38
|
+
.viewport { position: relative; width: 100%; height: 100vh; }
|
|
39
|
+
.card { transform: translate(-50%, -50%); }
|
|
40
|
+
</style>
|
|
53
41
|
```
|
|
54
42
|
|
|
55
|
-
|
|
56
|
-
- 当容器缩放时,`top/left` 等像素值会按缩放比乘积计算(例如 `left * scale`)
|
|
57
|
-
- 适用于基于像素的精细定位需求
|
|
58
|
-
|
|
59
|
-
## API
|
|
60
|
-
|
|
61
|
-
- `createFitScale(options)`:注册插件,提供全局缩放值与组件
|
|
62
|
-
- `target?: string | HTMLElement`:监听缩放的目标容器,默认 `#app`
|
|
63
|
-
- `designHeight?: number`:设计稿高度(用于高为主的缩放基准),默认 `1080`
|
|
64
|
-
|
|
65
|
-
- `useFitScale()`:在组件内获取当前缩放值(`Ref<number>`)
|
|
66
|
-
|
|
67
|
-
- `FitContainer`:定位+缩放组件(已全局注册)
|
|
68
|
-
- `scale?: number`:可选覆盖缩放值(不传则使用全局缩放)
|
|
69
|
-
- `top/bottom/left/right?: number`:定位坐标
|
|
70
|
-
- `unit?: 'px' | '%'`:坐标单位,默认 `'px'`
|
|
43
|
+
要点:`top/left` 为百分比时,位置不受缩放影响;仅内部内容按比例缩放。
|
|
71
44
|
|
|
72
|
-
|
|
45
|
+
### 像素定位(随缩放)
|
|
73
46
|
|
|
74
47
|
```vue
|
|
75
48
|
<template>
|
|
76
|
-
<
|
|
77
|
-
<
|
|
78
|
-
|
|
79
|
-
</
|
|
80
|
-
</
|
|
49
|
+
<div class="viewport">
|
|
50
|
+
<FitContainer :top="90" :left="90" unit="px">
|
|
51
|
+
<div class="box">内容</div>
|
|
52
|
+
</FitContainer>
|
|
53
|
+
</div>
|
|
81
54
|
</template>
|
|
82
55
|
|
|
83
56
|
<style scoped>
|
|
84
|
-
.
|
|
85
|
-
|
|
86
|
-
width: 400px;
|
|
87
|
-
height: 260px;
|
|
88
|
-
}
|
|
57
|
+
.viewport { position: relative; width: 100%; height: 100vh; }
|
|
58
|
+
.box { width: 120px; height: 80px; }
|
|
89
59
|
</style>
|
|
90
60
|
```
|
|
91
61
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
62
|
+
要点:容器缩放后,像素坐标会乘以缩放值(如 `left * scale`)。
|
|
63
|
+
|
|
64
|
+
## API 精简版
|
|
65
|
+
|
|
66
|
+
- `createFitScale({ target?, designHeight? })`
|
|
67
|
+
- `target`:监听缩放的容器(默认 `#app`)
|
|
68
|
+
- `designHeight`:设计稿高度(默认 `1080`)
|
|
69
|
+
- `useFitScale()`:在组件内获取当前缩放值 `Ref<number>`
|
|
70
|
+
- `FitContainer` 组件属性:
|
|
71
|
+
- `top/bottom/left/right?: number`
|
|
72
|
+
- `unit?: 'px' | '%'`(默认 `px`)
|
|
73
|
+
- `scale?: number`(覆盖全局缩放)
|
|
74
|
+
|
|
75
|
+
## 小贴士
|
|
76
|
+
|
|
77
|
+
- 使用 `right` 时,缩放原点为右上角(更易实现右侧对齐元素)
|
|
78
|
+
- 首次接入时,务必引入样式:`import 'vfit/style.css'`
|
package/package.json
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vfit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "A tiny Vue 3 plugin to auto-fit UI scale based on container size, plus a FitContainer component for easy positioning.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"vue3",
|
|
7
|
+
"vfit",
|
|
8
|
+
"scale",
|
|
9
|
+
"responsive",
|
|
10
|
+
"container",
|
|
11
|
+
"positioning",
|
|
12
|
+
"auto-scale",
|
|
13
|
+
"vue-plugin"
|
|
14
|
+
],
|
|
5
15
|
"license": "MIT",
|
|
6
16
|
"type": "module",
|
|
7
17
|
"main": "dist/fitscale.umd.js",
|
|
@@ -15,7 +25,8 @@
|
|
|
15
25
|
"./style.css": "./dist/style.css"
|
|
16
26
|
},
|
|
17
27
|
"files": [
|
|
18
|
-
"dist"
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md"
|
|
19
30
|
],
|
|
20
31
|
"scripts": {
|
|
21
32
|
"build": "vite build"
|