微信小程序「 Skyline-Worklet-ios-Andorid 」项目实战-04

一、概述

使用字体库可以给app添加更个性化的视觉效果,微信小程序中使用wx.loadFontFace加载动态网络字体。还有一个是加载内置字体的wx.loadBuiltInFontFace。我们加载网络字体还可以使用@font-face{}的形式。

wx.loadFontFace({})

属性类型默认值必填说明最低版本
globalbooleanfalse是否全局生效wx.loadBuiltInFontFace
familystring定义的字体名称
sourcestring字体资源的地址,可以为 https 链接或者 Data URL。

二、基本使用

微信使用wx.loadFontFace()动态加载网络字体。我们可以去iconfont上下载免费字体

下载后得到要使用  .woff 和 .woff2 类型的文件,上传到自己或可以访问的远程服务器。

App({
  onLaunch() {
    this.globalData = {
      appName: '多时壁纸', // app名称
      windowInfo: null, // 设备布局与APP基础信息
      lang: 'zh_CN', // 当前语言
      theme: 'light', // 主题外观
      screenType: Number(wx.getStorageSync('screen')) || 0, // 选择的屏幕类型信息【0: 手机、1: 平板、2: 桌面】
      deviceType: 0, // 当前的设备类型 0:手机、1:平板
    }
    // 获取窗口信息
    const windowInfo = wx.getWindowInfo()
    // 获取设备基础信息
    windowInfo.deviceInfo = wx.getDeviceInfo()
    // 获取菜单按钮(右上角胶囊按钮)的布局位置信息。坐标信息以屏幕左上角为原点。
    windowInfo.clientRect = wx.getMenuButtonBoundingClientRect()
    // APP基础信息
    windowInfo.appBase = wx.getAppBaseInfo()
    // 计算appbar高度
    windowInfo.appbarHeight = windowInfo.clientRect.bottom + windowInfo.clientRect.top - windowInfo.statusBarHeight
    // 计算胶囊边距
    windowInfo.padding = windowInfo.windowWidth - windowInfo.clientRect.right
    // 计算头部导行高度
    windowInfo.headerHeight = windowInfo.appbarHeight - windowInfo.statusBarHeight
    // 设备宽高比例
    windowInfo.ratio = windowInfo.screenWidth / windowInfo.screenHeight
    // 加入全局数据
    this.globalData.windowInfo = windowInfo
    console.log(windowInfo)

    // 加载网络字体
    wx.loadFontFace({
      family: 'wfy',
			source: 'url("https://vhome-4gtecpvp8a2f1141-1259471910.tcloudbaseapp.com/AlimamaFangYuanTiVF-Thin.woff")',
			global: true,
      success: console.log,
      fail: console.log
    })
    // 加载内置字体
	wx.loadBuiltInFontFace({
      family: 'WeChatSansSS',
			source: 'WeChatSansSS',
			global: true,
      success: console.log,
      fail: console.log
    })
  }
})

在根目录下创建 font.wxss 在再 app.wxss 引入。

@font-face {
  font-family: "wfy";src: url("https://vhome-4gtecpvp8a2f1141-1259471910.tcloudbaseapp.com/AlimamaFangYuanTiVF-Thin.woff?sign=24e42f3ca81a02838ca727bd06f30aa5&t=1741670737"),
  url("https://vhome-4gtecpvp8a2f1141-1259471910.tcloudbaseapp.com/AlimamaFangYuanTiVF-Thin.woff2?sign=8cd248614620c08c29ff82963e1a4c8b&t=1741669251");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

.wfy {
  font-family: wfy;
}
@import './common.wxss';
@import './iconfont.wxss';
@import './font.wxss';
page {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-size: 28rpx;
  color: #030303;
  background-color: transparent;
}

使用

.title {
  flex: 1;
  display: flex;
  align-items: center;
  font-size: 30rpx;
  font-family: wfy, 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  font-weight: 800;
}

三、总结

微信小程序使用网路字体有两种形式引入,使用wx.loadFontFace好一点,使用@font-face{}先默认使用本地字体,当下载完使用自定义的加载字体,文字会抖动一下。

### 微信小程序 Skyline 开发概述 微信小程序 Skyline 提供了一种新的渲染机制,旨在提升应用性能并改善用户体验。通过采用更高效的布局算法和绘制方式,Skyline 能够显著减少页面加载时间和资源消耗[^1]。 对于希望利用这一特性构建高效应用程序的开发者来说,理解如何正确配置和使用 Skyline 至关重要。下面是一些关键知识点: #### 配置 Skyline 渲染模式 要启用 Skyline 渲染引擎,需在 `app.json` 文件中设置 `"renderMode": "skyline"` 参数。此参数告知编译工具应优先考虑使用 Skyline 进行组件渲染[^2]。 ```json { "pages":[], "window":{ ... }, "usingComponents": {}, "renderMode": "skyline" } ``` #### 实现常见交互效果 基于 Skyline 的开发同样遵循标准的小程序编程模型,这意味着大多数现有功能仍然适用。例如,创建轮播图可以通过 WXML 和 WXSS 结合 JavaScript 来完成。由于 Skyline 对动画的支持更加友好,因此这些视觉元素的表现会更为流畅自然[^3]。 ```html <!--index.wxml--> <swiper indicator-dots="{{true}}" autoplay="{{true}}"> <block wx:for="{{images}}" wx:key="unique"> <swiper-item> <image src="{{item.src}}"></image> </swiper-item> </block> </swiper> ``` ```css /* index.wxss */ swiper { height: 300rpx; } swiper image { width: 100%; height: 100%; } ``` #### 解决 URL 格式错误引发的问题 当遇到因路径格式不当而导致的功能异常时,确保所有跳转链接均以正斜杠 `/` 开始是非常重要的。这不仅适用于导航操作,也涵盖了 API 请求中的相对路径定义[^4]。 ```javascript // 正确做法 wx.navigateTo({ url: '/pages/productDetail/index?id=1' }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值