美文网首页
小程序 icon 图标的实现方案

小程序 icon 图标的实现方案

作者: Vergil_wj | 来源:发表于2021-05-22 14:55 被阅读0次

    官方 icon 类型默认有九种:

    success, success_no_circle, info, warn, waiting, cancel, download, search, clear

    <icon type="success" size="93" color="green"></icon>
    

    官方提供数量太少,其它自定义 icon 方式:

    1、使用图片
    • 如果图标过多,造成大量HTTP请求;
    • 不方便修改颜色;
    • 图标放大会变虚;
    2、精灵图(Sprite)
    • 连续图片集,加载时只加载一次,减少HTTP请求。在使用时,通过背景图片定位和裁剪,只渲染图片的一小片区域。
    连续图片集.png sprite.png
    3、CSS 样式绘制

    绘制一个关闭按钮icon:

    .icon_close{
      display: inline-block;
      width: 17px;
      height: 2px;
      background-color: green;
      transform: rotate(45deg);
    }
    
    .icon_close::after{
      content: '';
      display: block;
      width: 17px;
      height: 2px;
      background-color: red;
      transform: rotate(-90deg);
    }
    
    • 每次需要手写css代码,工作量大;
    • 图标绘制时,需要统一一个中心点,否则使用时控制位置比较麻烦;
    • 不方便控制大小、颜色;
    4、矢量字体(推荐)

    从 iconfont 中找到需要的图标:

    iconfont.png

    .wxss 文件

    @font-face {
      font-family: 'iconfont';  /* Project id 2563935 */
      src: url('//at.alicdn.com/t/font_2563935_33okfvdpwa8.woff2?t=1621605494968') format('woff2'),
           url('//at.alicdn.com/t/font_2563935_33okfvdpwa8.woff?t=1621605494968') format('woff'),
           url('//at.alicdn.com/t/font_2563935_33okfvdpwa8.ttf?t=1621605494968') format('truetype');
    }
    
    .iconfont{
      font-family: 'iconfont';
      font-size: 40px;
      color: red;
    }
    
    .icon_people::before{
      content: '\e74b';
    }
    
    .icon_heart::before{
      content: '\e8ab';
    }
    

    .wxml 文件

    <icon class="iconfont icon_people"></icon>
    <icon class="iconfont icon_heart"></icon>
    

    效果:


    iconfont.png
    5、SVG 矢量文件
    • 有路径绘制信息的文本描述文件;

    • Sketch 软件、photoshop 在线编辑(https://www.uupoop.com)、iconfont 网站都可以导出 SVG 格式文件。Sketch 导出的有冗余信息,例如注释,不简洁;

    将 SVG 文件转化为 base64 字符串,在小程序中使用 base64 字符串作为图片源,实现自定义图标。
    image 转 base64 工具网址: https://www.sojson.com/image2base64.html

    // wxss 
    .svg_icon {
      display: block;
      width: 200px;
      height: 200px;
      background-repeat: no-repeat;
      background: url("data:image/svg+xml;base64,PHN...Zz4=");
    }
    
    // wxml
    <icon class="svg_icon"></icon>
    

    icon 常见问题

    1. icon 图标是可以和文本同行的,放在段落中。
    2. 真机上 icon 显示空白。
      如果图标是自定义实现的,要检查机型及嵌入的字体文件类型,可能是兼容新引起的。在小程序中推荐使用 TTF 和 WOFF 格式的字体,如果使用这两种字体问题依然存在,则考虑换 SVG 格式的数据嵌入。

    相关文章

      网友评论

          本文标题:小程序 icon 图标的实现方案

          本文链接:https://www.haomeiwen.com/subject/wyowjltx.html