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.
Files changed (2) hide show
  1. package/README.md +44 -60
  2. package/package.json +13 -2
package/README.md CHANGED
@@ -1,94 +1,78 @@
1
1
  # vfit
2
2
 
3
- 一个用于 Vue 3 的轻量缩放插件,提供全局缩放值与 `FitContainer` 组件,使 UI 能根据容器尺寸进行自适应缩放。
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
- - `%`:不参与缩放,始终基于容器百分比定位(适用于居中或相对位置);缩放仅作用于内容的 `transform: scale(...)`
25
- - `px`:参与缩放,容器位置值会按比例乘以缩放值(适用于固定像素布局)
21
+ - 父容器需设置定位属性:`position: relative`(推荐)或 `absolute`
22
+ - 两种坐标单位:
23
+ - `%`:位置不随缩放变化,适合居中/相对位置
24
+ - `px`:位置随缩放乘积变化,适合固定像素布局
26
25
 
27
- ### 使用 `%`(常用于居中)
26
+ ### 居中(百分比)
28
27
 
29
28
  ```vue
30
29
  <template>
31
- <!-- 设置百分比位置,内容通过 translate 实现居中 -->
32
- <FitContainer :top="50" :left="50" :unit="'%'">
33
- <div style="transform: translate(-50%, -50%)">
34
- <!-- 你的内容 -->
35
- </div>
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
- ```vue
47
- <template>
48
- <!-- 像素坐标将随缩放值同步乘积,保持相对位置 -->
49
- <FitContainer :top="90" :left="90" :unit="'px'">
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
- <FitContainer :top="50" :left="50" unit="%">
77
- <div class="card">
78
- ...内容...
79
- </div>
80
- </FitContainer>
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
- .card {
85
- transform: translate(-50%, -50%);
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.6",
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"