【UniApp】uniapp 中使用不同字体
CrazyPanda发表于:2023-12-21 22:46:39浏览:284次
展示效果 : 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运行比较慢是什么原因
- 随着移动互联网用户的不断增长,移动应用市场呈现出爆发式的增长态势。为了迎合这个趋势,许多开发者选择了跨平台开发技术,在多个平台发布应用,以便在更广泛的受众中推广自己的应用。UniApp就是其中的一种跨平台开发技术,它可以同时在iOS和Android平台上运行。然而,在使用UniApp开发应用的过程中,很多开发者都发现应用的运行速度太慢了。这是一个非常严重的问题,因为速度慢不仅会给用户带来不好的用户体验,而且也会影响应用的市场竞争力。所以,如何提高UniApp的运行速度成为了开发者们十分
- 【UniApp】UniApp原生讯飞语音插件-YL-SpeechRecognition
- 由于插件文档图片部分可能无法显示,可以移步到CSDN博客,查看完整文档:https://blog.csdn.net/baiyuliang2013/article/details/130925332插件说明:支持安卓IOS双端!新版本已由必须联系本人打离线包,升级为线上购买后自主导入sdk打包,更方便快捷!当然,您在使用时遇到问题依然可以联系本人QQ:453503875,微信:同qq。若您只需要安卓端,可使用:Uts版插件:https://ext.dcloud.net.cn/plugin?id=1
- 【UniApp】uniapp如何实现多端统一开发
- Uniapp是一个基于vue.js的框架,可以实现一次开发,多端发布,包括了H5、小程序、App等多个平台。本文将介绍如何使用Uniapp实现多端统一开发,并附上代码示例。一、项目创建和配置在HBuilderX中创建Uniapp项目,选择需要开发的目标平台。在项目的manifest.json文件中配置App基本信息,比如包名、版本号等。配置项目的各平台的自定义配置,比如小程序的appid等。二、组件和样式的开发Uniapp支持使用vue.js的组件和样式进行开发,在不同平台上的样式和组
- 【UniApp】使用uniapp实现日历功能
- 使用uniapp实现日历功能随着移动互联网的发展,日历功能成为了许多APP和网站的必备组件之一。在uniapp这个跨平台开发框架中,我们可以很方便地实现日历功能,并且兼容多个平台,包括iOS、Android等。首先,我们需要用到uniapp的组件库中的日期选择器。uniapp提供了picker组件,其中mode属性可以设置为"date"来实现日期选择。具体代码如下:<template> <view> &nb
- 【UniApp】Flutter和uniapp的区别:适用场景、生态系统和社区支持
- 随着移动应用开发领域的迅速发展,各种跨平台开发框架也应运而生。在这些框架中,Flutter和uniapp无疑是两个备受关注的热门选择。它们都具有跨平台开发的能力,但在适用场景、生态系统和社区支持等方面存在一些区别。首先,适用场景是选择开发框架的重要考虑因素之一。Flutter是Google推出的UI框架,使用Dart语言进行跨平台开发。它主要适用于开发高性能的移动应用程序,特别是那些对视觉效果和动画效果要求较高的应用。Flutter具有热重载功能,在开发过程中能够实时预览修改后的效果,提高开发效
- 【UniApp】UniApp实现支付宝小程序的开发与上线流程解析
- UniApp是一款基于Vue.js框架的跨平台开发工具,能够快速实现一次编码,多端发布的效果。作为开发者,我们可以利用UniApp来实现支付宝小程序的开发,同时本文将对支付宝小程序开发与上线流程进行详细解析,并提供相应的代码示例供参考。一、UniApp与支付宝小程序开发环境搭建1.确保已安装好Node.js环境,如未安装,可前往Node.js官网下载并安装最新版本。2.在命令行中执行以下命令,安装全局Vue-cli脚手架工具:npm install -g
- 【UniApp】如何在uniapp中关闭webview
- 在使用uniapp开发时,经常会需要在应用中使用webview来加载外部网页或是展示其他内容。但是,有时候我们并不需要一直保持webview的打开状态,而是需要手动关闭。那么,本文将会介绍如何在uniapp中关闭webview。一、关闭当前页面在uniapp中,我们可以使用以下方法来关闭当前webview所在的页面:uni.navigateBack({ delta: 1 });这个方法会返回到上一个页面,即关闭当前页面。二、关闭
- 【UniApp】uniapp引入腾讯云播放器
- 随着科技的不断发展,人们对于视频媒体的需求和依赖也越来越大。在移动端中,很多应用都需要视频播放功能,然而在实现视频播放时又会面临着很多问题。为了解决这些问题,互联网公司们纷纷推出了自己的视频播放器,腾讯云也不例外。腾讯云播放器是一款流畅、稳定、易于使用的播放器,不仅支持多种格式的视频播放,而且支持高度定制化,可以满足开发者的个性化需求。而本文主要讲述如何在uniapp框架中引入腾讯云播放器。1、注册腾讯云账号在引入腾讯云播放器之前,
栏目分类全部>