微信小程序中使用iconfont图标

方案一:

利用小程序中不支持 ttf 字体,却支持 base64 的特点,我们可以通过将 ttf 字体转码成 base64 ,再通过 iconfont 的特点,通过设置字体大小和颜色来达到目的。

具体做法:
1.我们可以先去阿里提供的图标库 官网找到我们需要的3个图标, 点击 下载代码 将代码下载到本地~
2.解压我们刚才下载的包,会有以下这些文件,但对于我们来说,会用到的只有 iconfont.cssiconfont.ttf 这两个文件。
3.我们要对 iconfont.ttf 这个文件进行转码,将它转成 base64 格式,刚好 这个网站 就提供了这个功能,按照下图的步骤,分别上传 ttf 文件,选择配置,点击转换。
在这里插入图片描述
4.转换完成如下图所示,废话不多说,直接下载下来解压,我们需要的是里面 stylesheet.css 这个文件
5.我们在小程序里的静态资源文件夹里新建一个叫 iconfont.wxss 样式文件,将 上面解压出来的 stylesheet.css 里面的内容全部拷贝到 iconfont.wxss 中,另外,还记得我们上面说的 iconfont.css 吗?这时候就要派上用场了,我们打开 iconfont.css 这个样式文件,将下面的样式,也就是我用红框标注的内容复制到 iconfont.wxss 文件里,注意上面的不需要复制!!
在这里插入图片描述到此为止,准备工作算是已经完成了,这时候你的 iconfont.wxss 应该类似下面这样:
在这里插入图片描述
6.接着,将我们的字体文件引入到 app.wxss 全局 , 这样你就可以在任何你想用到的地方进行调用了,只需要将 class 写对就没什么问题了
在这里插入图片描述
你要换颜色,只要改变对应的 color 就可以了~
在这里插入图片描述
方案一缺点:每次要添加或者更改一个图标,整个流程都要重新走一遍…

方案二

第二套方案的思路是借助 svg 矢量图具有不失真和可以自主填充颜色的特点,通过 fill 属性,用户可以自定义填充颜色,但是小程序里面不支持 svg 标签的,我们通过颜色选择器将用户选择好的颜色填充到 svg 里,在通过转码将换过颜色的 svg 转成 base64 编码(在线转换地址)发给小程序,小程序可以直接用在 image 标签中的 src 属性上~

缺点:更改颜色不灵活,每个svg图标都需要转换。

方案三

把SVG代码直接内联在CSS的url()方法中,语法就是data:image/svg+xml;utf8,加上完整的SVG代码即可!例如比较常用的background-image的url()方法,代码如下:

.icon-arrow-down {
    width: 20px; height: 20px;
    background: url('data:image/svg+xml;utf8,<svg t="1540868110683" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1632" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M801.504818 539.525929c0.663667-1.327335 1.831083-2.49475 2.326834-3.822085a63.23232 63.23232 0 0 0-12.79359-73.635108L321.281418 17.707368a63.848011 63.848011 0 1 0-87.772025 92.753529l421.548797 398.776207-419.885631 404.597291a63.792039 63.792039 0 1 0 88.435693 91.953929l465.438808-448.64722c0.799599-0.799599 1.159419-2.158918 2.158918-2.990502a25.003473 25.003473 0 0 1 2.158918-1.831083 55.444222 55.444222 0 0 0 8.139922-12.79359z m0 0z" fill="#cdcdcd" p-id="1633"></path></svg>') no-repeat center;
    background-size: 100%;
}

改颜色的话直接改 fill="#cdcdcd" 就可以。
缺点:
不支持IE,IE浏览器出于安全考虑,需要对一些字符进行安全转义。参考张鑫旭大神的文章

参考:
https://www.jianshu.com/p/9942ac4e94b5
https://www.zhangxinxu.com/wordpress/2018/08/css-svg-background-image-base64-encode/

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值