HarmonyOS 鸿蒙Next Web组件:H5页面字体如何跟随系统字体大小变化
涉及知识点:
1、configuration标签:用于指定描述应用字体大小跟随系统变更的配置文件
3、textZoomRatio(Web组件属性):设置页面的文本缩放百分比,默认为100
实现逻辑核心代码:
1、配置APP字体大小跟随系统(参考知识点1)
在AppScope/app.json5文件中添加"configuration": “$profile:configuration”
{
"app": {
"configuration": "$profile:configuration"
}
}
在开发视图的AppScope/resources/base/profile下面定义配置文件configuration.json
{
"configuration": {
"fontSizeScale": "followSystem",
"fontSizeMaxScale": "3.2"
}
}
2、订阅系统环境变量的变化(参考知识点2)
UIAbility组件提供了UIAbility.onConfigurationUpdate()回调方法用于订阅系统环境变量的变化。当系统环境变量发生变化时,会调用该回调方法。在该方法中,通过Configuration对象获取最新的系统环境配置信息,而无需重启UIAbility。
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
systemFontSize = this.context.config.fontSizeScale; // UIAbility实例首次加载时,系统当前字体大小
AppStorage.setOrCreate('systemFontSize', systemFontSize); // 保存systemFontSize
}
onConfigurationUpdate(newConfig: Configuration): void { // import { Configuration } from '[@kit](/user/kit).AbilityKit'; 否则该方法不生效
hilog.info(DOMAIN_NUMBER, TAG,
`onConfigurationUpdated systemFontSize is ${systemFontSize}, newConfig: ${JSON.stringify(newConfig)}`);
if (systemFontSize !== newConfig.fontSizeScale) {
hilog.info(DOMAIN_NUMBER, TAG, `systemFontSize from ${systemFontSize} changed to ${newConfig.fontSizeScale}`);
systemFontSize = newConfig.fontSizeScale; // 将变化之后的字体大小保存,作为下一次变化前的字体大小
AppStorage.setOrCreate('systemFontSize', systemFontSize); // 保存systemFontSize
}
}
3、Web组件配置textZoomRatio属性值
import { webview } from '[@kit](/user/kit).ArkWeb';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct WebTextRatio {
private controller: webview.WebviewController = new webview.WebviewController();
[@StorageProp](/user/StorageProp)("systemFontSize") fontSizeScale: number = 100
build() {
Column() {
Text("系统字体大小比例:" + this.fontSizeScale)
Web({ src: $rawfile('webRatio.html'), controller: this.controller })
.domStorageAccess(true)
.javaScriptAccess(true)
.zoomAccess(true)
.textZoomRatio(this.fontSizeScale * 100) // 设置页面的文本缩放百分比,默认为100
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next Web组件:H5页面字体如何跟随系统字体大小变化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next Web组件:H5页面字体如何跟随系统字体大小变化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,Next Web组件的H5页面字体要跟随系统字体大小变化,可以通过以下方式实现:
-
CSS媒体查询:利用CSS的媒体查询功能,根据系统字体大小的变化动态调整H5页面的字体大小。虽然这不是直接监听系统字体变化,但通过媒体查询的断点设置,可以模拟出类似的效果。
-
系统主题监听:在HarmonyOS的JavaScript API中,有监听系统主题变化的功能。虽然不直接针对字体大小,但主题变化往往包含字体大小的调整。监听主题变化后,可以动态调整页面的CSS样式。
-
自定义属性与JavaScript:在H5页面中,使用CSS自定义属性(如
--font-size
)来定义字体大小,然后通过JavaScript监听系统字体大小的变化(如果系统提供了相关API或事件),并更新自定义属性的值,从而改变字体大小。 -
使用系统样式:尽可能使用系统默认的CSS样式,这样当系统字体大小变化时,这些样式会自动更新。例如,使用
rem
单位代替px
单位,因为rem
单位是相对于根元素(html)的字体大小,而根元素的字体大小通常由系统控制。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html