跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
HTML / CSSWeChat大前端

微信小程序离线引入 IconFont 字体图标的解决方案

微信小程序限制远程域名安全策略,导致无法直接通过在线链接引入阿里 IconFont。维护期间需采用本地 Base64 方案,将 TTF 字体转换为内联样式,替换原有 CSS 配置并补充全局字体声明,即可实现离线图标正常显示。该方法避免了依赖外部链接失效的风险,适合生产环境长期使用。

黑客发布于 2025/2/3更新于 2026/4/241 浏览
微信小程序离线引入 IconFont 字体图标的解决方案

在微信小程序开发中,由于平台对线上资源的安全域名限制,我们无法像 Web 项目那样直接通过在线链接引入阿里的 IconFont 图标库。虽然阿里矢量图库近期恢复了部分功能,但为了防止后续维护导致链接失效,采用本地离线方案更为稳妥。

一、在线链接方式(参考)

如果暂时使用在线链接,需要注意每次新增图标后必须更新外部样式链接。操作时点击'下载至本地'获取字体包,打开自定义的 iconfont.css 文件,将其中选中的部分替换为最新的在线链接即可。随后在 app.wxss 中引入该 CSS 文件,最后在页面的 WXML 中使用 <text class="iconfont icon-xxx"></text> 调用图标。

二、离线 Base64 方案(推荐)

当无法获取在线链接或需要更稳定的方案时,我们需要将远程路径转换为 Base64 格式。这是因为小程序限制了接口安全域名,Base64 内联可以绕过这一限制。

1. 下载并转换字体

首先下载字体图标压缩包,解压后找到 .ttf 文件。推荐使用 Transfonter 工具进行格式转换:

  1. 打开转换网站,勾选 "Base64 encode" 选项,上传 TTF 文件。
  2. 点击 "Convert" 进行转换,完成后下载生成的压缩包。
  3. 解压后你会得到包含 stylesheet.css 的文件,复制其中的内容。
2. 替换样式配置

在项目中打开自定义的 iconfont.css 文件,将原有的 @font-face 和 .iconfont 代码段替换为刚才复制的内容。注意这里涉及两段关键代码的替换。

/* 示例:替换后的 @font-face 结构 */
@font-face {
  font-family: 'iconfont'; /* Project id 123456 */
  src: url('data:application/x-font-ttf;charset=utf-8;base64,AA...'); 
}
3. 补充全局字体声明

完成上述替换后,可能还无法正常使用,因为缺少全局字体声明。需要在 app.wxss 或全局样式文件中添加以下代码,确保所有类名包含 icon- 的元素都能正确识别字体:

[class^="icon-"], [class*=" icon-"] {
  font-family: 'iconfont' !important;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
4. 页面使用示例

配置完成后,即可在任意页面的 WXML 中正常渲染图标。下面是一个简单的列表展示示例,展示了如何结合业务数据与图标显示:

<view class="padding-20-0 m-t-100 bgc">
  <view wx:if="{{safetyEmps.length}}">
    <view wx:key="this" wx:for="{{safetyEmps}}" class="mrg-0-10 {{index !== 0 ? 'm-t-30' : ''}}">
      <view class="font30 fontB padding20 colorfff" style="background-color: {{index % 2 == 0 ? '#0062D9' : '#5C75F2'}};">
        {{item.ename}}
      </view>
      <view class="flex-wrap text-right space-around m-t-10">
        <view class="w50p padding20 bgc border-box position-r {{index % 2 == 0 ? 'item' : 'item2'}}">
          <view>今年计划投入<text class="font20">(万元)</text></view>
          <view class="fontB font36 m-l-15p m-t-10">{{fn.transInput(item.sumMoney)}}</view>
          <text class="iconfont icon-lvzhou_zongshu font70 theme-color posi-br"></text>
        </view>
        <view class="w50p padding20 bgc border-box position-r {{index % 2 == 0 ? 'item' : 'item2'}}">
          <view>今年实际支出<text class="font20">(万元)</text></view>
          <view class="fontB font36 m-l-15p m-t-10">{{fn.transInput(item.siOut)}}</view>
          <text class="iconfont icon-a-touruzhichu theme-color font70 posi-br"></text>
        </view>
      </view>
    </view>
  </view>
  <view class="text-center padding20 bgc" wx:else>
    请选择企业
  </view>
</view>

至此,离线引入方案已处理完毕。相比在线链接,这种方式不受第三方网站维护影响,更适合生产环境长期使用。

目录

  1. 一、在线链接方式(参考)
  2. 二、离线 Base64 方案(推荐)
  3. 1. 下载并转换字体
  4. 2. 替换样式配置
  5. 3. 补充全局字体声明
  6. 4. 页面使用示例
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • Web 安全实战:PHP Assert 绕过与文件读取
  • Bugku Web 实战:PHP assert 绕过与文件读取
  • WordPress 基础、MyBatis-Plus 接口设计与前端依赖问题排查
  • OpenClaw 开源机器人实现空间记忆,具身智能迎来新突破
  • C++ 继承进阶:友元、静态成员与菱形继承详解
  • 从零构建高可用系统:端到端架构实战解析与避坑指南
  • C++ 手写线程池全流程:核心设计、线程安全与死锁解析
  • Python 近期副业需求清单及常见项目类型
  • iOS 设备运行 Minecraft Java 版配置与使用指南
  • 常见 Web 安全技术总结与入门指南
  • 基于 OpenAI Whisper 的音频转录实战指南
  • RAG 检索增强生成技术详解与实践指南
  • AIGC 核心技术解析:GPT、BERT 与 Transformer 工作原理
  • Vue3+TypeScript 中 Promise<string> 转 string 类型错误解析与解决方案
  • GLM-4.7-Flash 本地 AI 编码助手部署指南
  • Whisper-base.en 模型解析:74M 参数下的英文语音识别实践
  • Windows 系统安装 Microsoft Visual C++ Build Tools 详解
  • 前端 IndexedDB 本地数据库使用指南
  • 鸿蒙游戏开发:AI 驱动的智能 NPC 实现体验
  • C++ Vector 经典算法场景与代码实现

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online