uni-app 从vue页面路由跳转到nvue页面 引入外部字体不生效
uni-app 从vue页面路由跳转到nvue页面 引入外部字体不生效
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows 10 19044.1645 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.4.7
手机系统:全部
手机厂商:vivo
页面类型:nvue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
App下载地址或H5网址:[https://github.com/wq0425/ttfDemo](https://github.com/wq0425/ttfDemo)
测试过的手机:vivo nexs
操作步骤:
https://github.com/wq0425/ttfDemo
预期结果:
vue路由跳转nvue后引入外部字体生效
实际结果:
vue路由跳转nvue后引入外部字体不生效
bug描述:
在项目中需要修改app字体,是个视频项目,vue页面路由跳转nvue页面,vue页面字体修改生效,但是跳转nvue页面后不生效,
[bug复现地址](https://github.com/wq0425/ttfDemo)
更多关于uni-app 从vue页面路由跳转到nvue页面 引入外部字体不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
uni.loadFontFace nvue页面不支持
https://uniapp.dcloud.io/tutorial/nvue-api.html#dom
更多关于uni-app 从vue页面路由跳转到nvue页面 引入外部字体不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个对的NVUE不支持公共页面引入的字体
插件引入方式 PluginName = uni.requireNativePlugin(PluginName)
在 uni-app 中,从 Vue 页面跳转到 nvue 页面时,引入外部字体不生效的问题可能是由于 nvue 页面的渲染机制与 Vue 页面不同所导致的。nvue 页面使用的是原生渲染,而 Vue 页面使用的是 WebView 渲染,因此它们的样式和资源加载方式有所不同。
以下是一些可能的解决方案:
1. 在 nvue 页面中引入字体
确保在 nvue 页面中正确引入了字体文件。你可以在 nvue 页面的 <style> 标签中通过 @font-face 引入字体。
<style>
@font-face {
font-family: 'CustomFont';
src: url('/static/fonts/CustomFont.ttf');
}
.text {
font-family: 'CustomFont';
}
</style>
2. 使用 uni.loadFontFace 动态加载字体
uni-app 提供了 uni.loadFontFace API,可以在页面加载时动态加载字体。你可以在 nvue 页面的 onLoad 生命周期中调用这个 API。
export default {
onLoad() {
uni.loadFontFace({
family: 'CustomFont',
source: 'url("/static/fonts/CustomFont.ttf")',
success: () => {
console.log('字体加载成功');
},
fail: (err) => {
console.log('字体加载失败', err);
}
});
}
}
3. 确保字体文件路径正确
确保字体文件的路径是正确的,并且字体文件已经正确放置在项目的 static 目录下。路径应该是相对于 static 目录的。
4. 检查字体文件格式
确保字体文件的格式是 nvue 页面支持的格式。通常,ttf 和 otf 格式的字体文件在 nvue 页面中是可以正常使用的。
5. 使用 weex 的原生样式
nvue 页面使用的是 weex 的原生样式,因此某些 CSS 属性可能不支持。确保你使用的 CSS 属性在 nvue 页面中是有效的。
6. 检查字体是否被正确应用
在 nvue 页面中,确保你正确地将字体应用到了元素上。例如:
<template>
<view class="text">Hello, World!</view>
</template>
<style>
.text {
font-family: 'CustomFont';
}
</style>
7. 使用 uni-app 的全局样式
如果你希望在多个页面中使用相同的字体,可以将字体定义在 App.vue 的全局样式中,这样所有页面都可以使用这个字体。
/* App.vue */
<style>
@font-face {
font-family: 'CustomFont';
src: url('/static/fonts/CustomFont.ttf');
}
</style>
然后在 nvue 页面中直接使用这个字体:
<template>
<view class="text">Hello, World!</view>
</template>
<style>
.text {
font-family: 'CustomFont';
}
</style>
8. 检查 nvue 页面的渲染模式
nvue 页面有两种渲染模式:weex 和 uni-app。确保你使用的是 uni-app 的渲染模式,因为 weex 模式可能不支持某些特性。
{
"pages": [
{
"path": "pages/nvuePage",
"style": {
"navigationBarTitleText": "nvuePage",
"renderer": "native"
}
}
]
}

