在 Vue 项目中实现用户可以调整字体大小,并且将调整后的字体大小保存到后端,以便不同用户之间能够保持一致的体验。
1、通过接口获取用户默认字体调整比例(使用vuex储存起来)
2、通过前端使用vuex封装全局字体调整方法数据方法
3、获取用户当前字体调整比例传递给后端保存
一 、vuex封装全局字体调整方法数据方法
import Vue from 'vue';
import store from '@/store/store'
// rem等比适配配置文件
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem() {
// 当前页面屏幕分辨率相对于 1920宽的缩放比例,可根据自己需要修改
let width = window.screen.width;
if(width <= 1360) {
width = 1360;
} else {
width = 1920;
}
let zoomRatio = 1;
try {
zoomRatio = store.getters.getZoomRatio? store.getters.getZoomRatio : 1;
}catch(e) {
}
const scale = document.documentElement.clientWidth / width;
// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
let fontSize = baseSize * Math.min(scale, 2) * zoomRatio;
document.documentElement.style.fontSize = fontSize + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function() {
setRem()
}
window.addEventListener('resize', function(event) {
// 在这里执行你的缩放检测逻辑
setRem()
});
Vue.prototype.$setRem = setRem; // 在 Vue 原型上定义,以便在组件中调用
二、获取用户字体调整比例以及传递给后端
//获取用户字体调整比例以及传递给后端
FontSize(value) {
使用vuex数据
this.$store.commit("vuex存用户调整旧数据",Number((value/100).toFixed(2)))
this.$setRem();
this.$api.post({
url: '接口路径',
data: {
后端字段:(value/100).toFixed(2)
}
}).then((res) => {
})
},
使用: "postcss-px2rem"、 "px2rem-loader",插件
总结:
- 用户界面缩放:假设应用支持用户调整字体大小或页面缩放比例,
FontSize
就是处理这种调整的核心函数。 - 响应式设计:通过调整根元素的字体大小(
REM
单位),可以使页面的布局根据用户设置自动调整,达到更好的适配效果。 - 服务器端同步设置:该方法将用户的设置(缩放比例)同步到服务器,确保在不同设备或会话中保持一致的用户体验。