小程序引入icon的三种方式

小程序引入icon的三种方式(原生图标、WeUI图标组件、iconfont图标)

原生图标

小程序里原生图标是通过icon标签来引入的:
<icon type="success" size="24" color="green" />

WeUI图标组件

WeUI 是一套同微信原生视觉体验一致的基础样式库,基于小程序自定义组件构建,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。要使用WeUI组件,我们需要到组件下载页面去下载icon组件WeUI组件库
勾选Icon组件
下载完成后我们会得到一个icon文件夹,里面有四个文件:icon.js, icon.json, icon.wxml,icon.wxss,我们在项目根目录下创建一个components文件夹,再将icon文件夹拷贝进去,然后在app.json中增加以下配置:

"usingComponents": {
  "mp-icon": "components/icon/icon"
},

示例代码:

<!--WXML示例代码-->
<mp-icon type="field" icon="add" color="black" size="{{25}}"></mp-icon>
<mp-icon icon="add" color="black" size="{{25}}"></mp-icon>

效果图:
在这里插入图片描述组件库里icon图标列表参考链接

iconfont图标

阿里的图标库下载需要的图标。
在这里插入图片描述
解压下载下来的download.zip文件,将其中的iconfont.css文件拷贝到小程序中,重命名为iconfont.wxss,打开iconfont.wxss文件:
在这里插入图片描述
由于小程序的wxss文件font-face的url不接受http地址作为参数,可以接受base64,因此可以先将字体文件下载后,转换为base64。打开Online @font-face generator 上传字体,选择base64编码,Convert后下载。
在这里插入图片描述将下载好的文件夹中stylesheet.css样式表中的内容拷贝, 粘贴至小程序的iconfont.css文件中,替换@font-face。

打开app.wxss,在首行引入iconfont.wxss(./styles/iconfont.wxss为 文件的路径):

/**app.wxss**/
@import './styles/iconfont.wxss';

在视图文件中,我们通过以下方式显示图标:
<icon class="iconfont icon-shezhi" />
效果图:
在这里插入图片描述

### 问题分析与解决方案 在 UniApp 小程序引入第三方 Icon 字体库后,图标无法显示的问题可能涉及多个方面的原因。以下是一些常见原因及对应的解决方案: #### 1. 图标字体文件路径错误 如果图标字体文件(如 `.ttf` 或 `.woff`)未正确加载或路径设置错误,会导致图标无法显示。确保字体文件的路径在项目中是正确的,并且能够在小程序环境中访问。 ```css @font-face { font-family: 'iconfont'; /* 给字体起个名字 */ src: url('./static/iconfont.ttf') format('truetype'); /* 确保路径正确 [^2] */ } ``` #### 2. 样式冲突或优先级问题 如果小程序中有其他样式规则覆盖了图标字体的样式,可能会导致图标无法正常显示。可以通过提高样式的优先级来解决此问题。 ```css .icon-class { font-family: 'iconfont' !important; /* 使用 !important 提高优先级 [^2] */ font-size: 16px; color: #000; } ``` #### 3. 图标编码格式不支持 部分小程序环境对某些字体编码格式的支持有限。建议使用 `.ttf` 或 `.woff` 格式的字体文件,避免使用 `.eot` 或 `.svg` 等可能不被支持的格式[^1]。 #### 4. 缓存问题 在开发过程中,由于小程序的缓存机制,可能导致新引入的字体文件未及时更新。可以尝试清理本地缓存或在字体文件路径后添加时间戳以强制刷新。 ```css @font-face { font-family: 'iconfont'; src: url('./static/iconfont.ttf?v=1.0.1') format('truetype'); /* 添加时间戳 */ } ``` #### 5. 文件大小限制 部分小程序平台对静态资源的文件大小有严格限制。如果字体文件过大,可能会导致加载失败。可以尝试优化字体文件,仅保留所需的字符集[^4]。 #### 6. 开发与生产环境差异 在开发和生产环境中,字体文件的路径或加载方式可能存在差异。确保在 `vue.config.js` 中正确配置了静态资源的处理逻辑。 ```javascript module.exports = { chainWebpack: config => { config.module .rule('fonts') .use('url-loader') .loader('url-loader') .tap(options => { options.limit = 10240; // 设置字体文件的最大大小 [^2] return options; }); } }; ``` ### 注意事项 - 确保字体文件已正确上传到小程序服务器,并且路径无误。 - 检查小程序的基础库版本是否支持相关功能[^3]。 - 如果使用的是自定义字体库,需确保字体文件的版权许可允许在小程序中使用。 ### 示例代码 以下是一个完整的示例,展示如何在 UniApp 小程序中正确引入第三方 Icon 字体库: ```html <template> <view class="icon-container"> <text class="icon-class"></text> <!-- 使用字体图标编码 --> </view> </template> <style> @font-face { font-family: 'iconfont'; src: url('./static/iconfont.ttf') format('truetype'); /* 引入字体文件 [^2] */ } .icon-class { font-family: 'iconfont' !important; /* 确保样式优先级 [^2] */ font-size: 24px; color: #333; } </style> ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值