【UniApp】uniapp 中使用不同字体
CrazyPanda发表于:2023-12-21 22:46:39浏览:292次
展示效果 : uniapp 多种字体的显示
H5网页
Android
IOS
uni.loadFontFace({ family: 'Bitstream Vera Serif Bold', source: 'url("https://sungd.github.io/Pacifico.ttf")', success() { console.log('success') } })(官方)注意:
引入中文字体,体积过大时会发生错误,建议抽离出部分中文,减少体积,或者用图片替代
微信小程序端只支持网络字体,字体链接必须是https。App支持网络或本地的字体(本地字体需使用平台绝对路径)。
微信小程序端字体链接必须是同源下的,或开启了cors支持,微信小程序的域名是servicewechat.com
canvas等原生组件不支持使用接口添加的字体
工具里提示 Faild to load font可以忽略
如果想在 App.vue 中初始化 字体 需要延迟 执行;暂时不知道为什么 猜测有可能 App.vue 执行到的时候 页面资源还没执行完毕 所以无法调用
<script> export default { onLaunch: function() { console.log('App Launch') setTimeout(() => { //本地 只支持 APP // uni.loadFontFace({ // family: 'font-test', // // 本地字体路径需转换为平台绝对路径 // source: `url(${plus.io.convertLocalFileSystemURL('_www/static/Pacifico.ttf')})`, // success() { // console.log('success') // }, // fail(e) { // console.log('fail') // } // }) //远程 兼容 App H5 const url = 'https://haciend-aassets-5gdqxjj2b8cb72d6-1302720239.tcloudbaseapp.com/Rabbit font.ttf' uni.loadFontFace({ family: 'font-test', source: `url("${url}")` }) }, 300) }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } } </script> <style> /*每个页面公共css */ </style>
我们来看段代码
<view class="text-cn" style="font-weight: 300;"> 哦 我是 谁 我在那?font-weight: 300; </view> <view class="text-cn" style="font-weight: 400;"> 哦 我是 谁 我在那?font-weight: 400; </view> <view class="text-cn" style="font-weight: 500;"> 哦 我是 谁 我在那?font-weight: 500; </view> <view class="text-cn" style="font-weight: 600;"> 哦 我是 谁 我在那?font-weight: 600; </view> <view class="text-cn" style="font-weight: 700;"> 哦 我是 谁 我在那?font-weight: 700; </view> <view class="text-cn" style="font-weight: 800;"> 哦 我是 谁 我在那?font-weight: 800; </view> <view class="text-cn" style="font-weight: 900;"> 哦 我是 谁 我在那?font-weight: 900; </view> <view class="text-cn" style="font-weight: normal;"> 哦 我是 谁 我在那?font-weight: normal; </view> <view class="text-cn" style="font-weight: bold;"> 哦 我是 谁 我在那?font-weight: bold; </view>
所以呢 实际上 在uniapp 中只支持 两种加粗;在实际生产环境中 建议使用两档:
style="font-weight: normal;"
style="font-weight: bold;"
page.vue
<template> <view class="content"> <view class="text-area"> <text class="title">{{title}}</text> </view> <view class="text-en"> who am i ? </view> <view>loadFontFaceFromWeb</view> <button @click="loadFontFaceFromWeb">从网络加载字体</button> <!-- #ifdef APP-PLUS --> <!-- 从本地加载字体 --> <view>loadFontFaceFromLocal</view> <button @click="loadFontFaceFromLocal">从本地加载字体</button> <view>loadFontFaceFromCache</view> <button @click="loadFontFaceFromCache">从网络加载字体并缓存</button> <!-- #endif --> <view class="text-cn"> 哦 我是 谁 我在那? </view> </view> </template> <script> //const url = 'https://sungd.github.io/Pacifico.ttf' const url = 'https://haciend-aassets-5gdqxjj2b8cb72d6-1302720239.tcloudbaseapp.com/Rabbit font.ttf' export default { data() { return { title: 'Hello' } }, onLoad() { }, methods: { loadFontFaceFromWeb() { uni.loadFontFace({ family: 'font-test', source: `url("${url}")` }) }, // #ifdef APP-PLUS loadFontFaceFromLocal() { uni.loadFontFace({ family: 'font-test', // 本地字体路径需转换为平台绝对路径 source: `url(${plus.io.convertLocalFileSystemURL('_www/static/Pacifico.ttf')})`, success() { console.log('success') }, fail(e) { console.log('fail') } }) }, async loadFontFaceFromCache() { let tempFilePath const savedFilePath = uni.getStorageSync('Pacifico') const [error, res] = await uni.getSavedFileList() if (!error) { const fileList = res.fileList const file = fileList.find(file => file.filePath === savedFilePath) if (file) { tempFilePath = file.filePath } } if (!tempFilePath) { const [error, res] = await uni.downloadFile({ url, }) if (!error) { tempFilePath = res.tempFilePath uni.saveFile({ tempFilePath, success(res) { uni.setStorage({ key: 'Pacifico', data: res.savedFilePath }) } }) } else { console.log('下载失败') return } } else { console.log('使用缓存资源,跳过下载步骤') } uni.loadFontFace({ family: 'font-test', source: `url("${plus.io.convertLocalFileSystemURL(tempFilePath)}")` }) } // #endif } } </script> <style> .content { display: flex; flex-direction: column; align-items: center; justify-content: center; font-family: font-test; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; } .text-cn { color: #ff0004; font-family: 'Courier New', Courier, monospace; } .text-en { color: #1755ff; /* font-family: ""; */ font-family: Arial, Helvetica, sans-serif; } </style>
2021年5月补充:
前几天做了一个PC版的 网页;发现其实我们大多时候 不用引入外部字体! 应为各个操作系统其实 是有类似的字体的;
比方下面这句代码:可以在 window 平台 和 Mac 得到 基本一样的显示效果!, 就是应为 在不同平台找到了 对应的字体
font-family: Helvetica, arial, "Microsoft YaHei", freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
生僻字 字体剔除:
生僻字字体剔除
https://blog.csdn.net/nicepainkiller/article/details/127887100?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168802707216800182755863%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168802707216800182755863&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-127887100-null-null.268^v1^koosearch&utm_term=%E5%AD%97%E4%BD%93&spm=1018.2226.3001.4450
猜你喜欢
- 【UniApp】Uniapp怎么动态更改tabbar
- Uniapp是一款跨端开发框架,可以同时开发出H5、小程序、app等多个平台的应用,是非常实用的开发工具。其中,tabbar是作为底部导航栏来展示多个页面的重要控件之一。在开发过程中,有时需要根据不同的业务需求动态更改tabbar,本文将介绍如何在Uniapp中实现动态更改tabbar的方法。一、tabbar的基本使用及结构在Uniapp中使用tabbar,需要在pages.json文件中设置底部导航栏的样式和页面路径。示例代码如下:"tabBar": {
- 【UniApp】如何在uniapp中使用表单验证技术实现输入校验
- 如何在uniapp中使用表单验证技术实现输入校验作为一种基于Vue.js的跨平台应用开发框架,UniApp可以开发同时运行在多个平台的应用程序,其支持使用表单验证技术来实现输入校验。本文将介绍在UniApp中如何使用表单验证技术来实现输入校验,并提供具体的代码示例。表单验证是一种常见的前端开发技术,用于确保用户输入的数据符合相应的规则和要求。在UniApp中实现表单验证可以通过使用Vue.js提供的指令和事件处理机制来完成。下面将结合具体示例来介绍如何在UniApp中实现表单输入校验。
- 【UniApp】uniapp如何实现多端统一开发
- Uniapp是一个基于vue.js的框架,可以实现一次开发,多端发布,包括了H5、小程序、App等多个平台。本文将介绍如何使用Uniapp实现多端统一开发,并附上代码示例。一、项目创建和配置在HBuilderX中创建Uniapp项目,选择需要开发的目标平台。在项目的manifest.json文件中配置App基本信息,比如包名、版本号等。配置项目的各平台的自定义配置,比如小程序的appid等。二、组件和样式的开发Uniapp支持使用vue.js的组件和样式进行开发,在不同平台上的样式和组
- 【UniApp】如何在uniapp中实现图片上传和预览
- 如何在uniapp中实现图片上传和预览在现代社交网络和电子商务应用中,图片上传和预览功能是非常常见的需求。本文将介绍如何在uniapp中实现图片上传和预览的功能,并给出具体的代码示例。一、图片上传功能的实现在uniapp项目中,首先需要在页面中添加一个图片上传组件,如下所示:<template> <view> <image v-for="(item, in
- 【UniApp】uniapp的标题怎么动态修改
- Uniapp是一个基于Vue.js框架的跨平台开发工具,它可以将一个项目一次性编译成多个平台的应用程序,同时还提供了一些独特的功能,如动态修改标题等。在Uniapp中,我们可以很容易地实现动态修改标题的功能,具体方法如下:首先,在Vue组件中,我们可以使用mounted函数来获取到当前的页面实例,然后使用$refs属性来获取到头部组件中的标题组件,接着我们就可以使用this.$refs.title对象来对标题进行修改。示例代码如下:mounted() { &nbs
- 【UniApp】uniapp怎么隐藏导航
- Uniapp是一种基于Vue.js开发的跨平台应用开发框架,它支持将一个应用打包成多个平台(如iOS、Android、H5等)。在开发Uniapp应用时,我们需要经常操作一些导航相关的功能,如导航栏、底部栏等的显示和隐藏。本文将介绍在Uniapp中如何实现隐藏导航的功能。在pages.json中配置导航栏先来看一下Uniapp中如何配置导航栏。在Uniapp中,我们可以通过pages.json文件来进行页面的配置。举个例子,在pages.json中如下配置:{
- 【UniApp】利用uniapp实现音频播放功能
- 利用uniapp实现音频播放功能随着移动互联网的发展,音频播放功能成为了许多应用必不可少的功能之一。而利用uniapp可以方便地实现音频播放功能,而且具有跨平台的特点,可以在不同的移动终端上运行。在进行uniapp开发之前,我们需要先准备好音频资源文件。在本文中,我们将使用一个名为"music.mp3"的音频文件作为示例。首先,我们需要在uniapp的项目中创建一个音频播放页面。在pages文件夹下,新建一个名为"audio"的文件夹,并在该文件
- 【UniApp】uniapp实现如何使用JSBridge实现与原生交互
- uniapp实现如何使用JSBridge实现与原生交互,需要具体代码示例一、背景介绍在移动应用开发中,有时需要与原生环境进行交互,比如调用原生的一些功能或获取原生的一些数据。uniapp作为一种跨平台的移动应用开发框架,提供了一种方便的方式来实现与原生交互,即使用JSBridge进行通信。JSBridge是一种前端与移动原生端进行交互的技术方案,通过在前端和原生端分别实现一个桥梁,使得前端可以调用原生的方法和获取原生的数据,同时原生也可以通过桥梁向前端发送消息。二、JSBridge的实
栏目分类全部>
推荐文章
- 【NPM】Windows 10 中 npm 软件包的默认安装位置在哪里
- 【UniApp】Flutter和uniapp的区别:适用场景、生态系统和社区支持
- 【Redis】Redis对象——内存回收,对象共享和空转时长
- 【Python】学习matplotlib绘制折线图的基本步骤
- 【Javascript】localStorage和sessionStorage的使用
- 【PHP】使用 PHPMailer 实现邮件的实时发送
- 【C#】Winform NanUI 0.77版本 读取嵌入式资源
- 【C#】Winform解决方案打包成.exe 安装版Windows桌面应用程序
- 【服务器】域名与服务器负载均衡技术学习总结
- 【MySQL】MySQL中的json操作