uni-app字体随着系统的大小而变化

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app字体随着系统的大小而变化

uniapp怎样支持随着系统字体的大小变化而变化,能满足老年人的需求

信息类型 信息
开发环境 uniapp
版本号 未提及
项目创建方式 未提及
9 回复

字体大小用rpx pages.json 文件中 globalStyle节点添加
“rpxCalcMaxDeviceWidth”: 2160, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
“rpxCalcBaseDeviceWidth”: 375, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
“rpxCalcIncludeWidth”: 750 // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750
改成这样: “globalStyle”: { “navigationBarTextStyle”: “black”, “navigationBarTitleText”: “uni-app”, “navigationBarBackgroundColor”: “#F8F8F8”, “backgroundColor”: “#F8F8F8”, “rpxCalcMaxDeviceWidth”: 2160, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960 “rpxCalcBaseDeviceWidth”: 375, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375 “rpxCalcIncludeWidth”: 750 // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750 }


加上这个不能随着系统字体大小的变化而变化,要像微信小程序那种可以调整字体大小的

css中只要是大小的数字都用rpx作为单位 / 底部tabbar区域 / .home-bottom-container { height: 121rpx; background-color: #F8F8F8; / background-color: #007AFF; / }

我都是用rpx作为单位的

怎么弄的 ?求指点一二

获取系统设置里的字号字体大小(ios、android):https://ext.dcloud.net.cn/plugin?id=11681

字体单位用em不能满足吗

在 Uni-App 中实现字体随着系统字体大小的变化而自动调整,可以通过监听系统字体大小的变化并动态调整页面的字体样式来实现。以下是一个基本的实现思路和相关代码示例:

思路

  1. 监听系统字体大小变化:通过 JavaScript 监听系统字体大小的变化。
  2. 动态调整字体:根据监听到的变化,动态调整页面中元素的字体大小。

实现步骤

  1. App.vue 中添加监听
<template>
  <App />
</template>

<script>
export default {
  onLaunch() {
    // 监听系统字体大小变化
    this.addFontResizeListener();
  },
  onShow() {
    // 如果需要在页面显示时做额外处理,可以在这里添加
  },
  onHide() {
    // 清理监听器
    this.removeFontResizeListener();
  },
  methods: {
    addFontResizeListener() {
      if (!window.addEventListener) return;
      window.addEventListener('resize', this.handleFontResize);
    },
    removeFontResizeListener() {
      if (!window.removeEventListener) return;
      window.removeEventListener('resize', this.handleFontResize);
    },
    handleFontResize() {
      // 获取系统字体大小,这里需要根据实际情况确定如何获取
      // 假设有一个函数 getSystemFontSize() 返回当前系统字体大小
      const systemFontSize = this.getSystemFontSize();
      
      // 动态调整页面字体大小
      document.documentElement.style.fontSize = `${systemFontSize * someScaleFactor}px`;
      
      // someScaleFactor 是你根据需要定义的缩放因子
      // 例如,如果系统字体是16px,你希望页面字体是系统字体的1.2倍,那么 someScaleFactor = 1.2
    },
    getSystemFontSize() {
      // 这里需要实现获取系统字体大小的逻辑
      // 示例:假设返回一个固定的值,实际中应根据平台API获取
      return 16; // 默认16px
    }
  }
};
</script>
  1. 在页面中应用动态字体

在页面中使用 rem 单位来定义字体大小,这样当 htmlfont-size 变化时,页面中的字体大小会随之变化。

<template>
  <view class="container">
    <text class="dynamic-font">动态字体示例</text>
  </view>
</template>

<style scoped>
.container {
  padding: 20px;
}

.dynamic-font {
  font-size: 1rem; /* 使用rem单位 */
}
</style>

注意事项

  • getSystemFontSize 方法需要根据不同平台(如 iOS、Android)的API实现来获取实际的系统字体大小。
  • someScaleFactor 是一个缩放因子,用于调整页面字体与系统字体的比例关系。
  • 由于 resize 事件会频繁触发,建议在实际应用中添加防抖(debounce)或节流(throttle)机制来优化性能。

以上代码提供了一个基础框架,你可以根据实际需求进行进一步的优化和扩展。

回到顶部