在vue3+vite小程序使用rem适配,小程序没有document
时间: 2024-04-11 22:33:38 浏览: 110
在小程序中,确实没有像浏览器中的 `document` 对象来直接设置根元素的字体大小。因此,在 Vue 3 + Vite 构建的小程序中使用 rem 适配时,可以通过以下方法来实现:
1. 在 `App.vue` 或者你的根组件中,使用 `wx.getSystemInfoSync()` 方法获取屏幕的宽度信息。
```vue
<template>
<div class="container">
<!-- 内容 -->
</div>
</template>
<script>
export default {
mounted() {
const res = wx.getSystemInfoSync();
const windowWidth = res.windowWidth;
const ratio = windowWidth / 750; // 设计稿宽度为750px
const fontSize = 16 * ratio; // 根据设计稿和屏幕宽度计算字体大小
wx.setStorageSync('fontSize', fontSize); // 将字体大小存储在缓存中,供其他组件使用
},
};
</script>
```
2. 在需要使用 rem 单位的组件中,通过计算属性获取字体大小。
```vue
<template>
<div class="text" :style="{ fontSize: fontSize + 'rpx' }">
<!-- 文本内容 -->
</div>
</template>
<script>
export default {
computed: {
fontSize() {
return wx.getStorageSync('fontSize');
},
},
};
</script>
```
在这个例子中,我们使用了 `wx.getSystemInfoSync()` 方法获取屏幕宽度,并将其转换为 rem 单位所需的字体大小。然后,我们将字体大小存储在缓存中,以便其他组件可以使用。在需要使用 rem 单位的组件中,我们通过计算属性获取缓存中的字体大小,并将其应用于相应的元素上。
这样,你就可以在 Vue 3 + Vite 构建的小程序中使用 rem 单位进行适配了,尽管小程序没有 `document` 对象。
阅读全文