DCloud_UNI_CHB
DCloud_UNI_CHB
  • 发布:2014-12-26 16:14
  • 更新:2023-11-23 17:42
  • 阅读:405628

mui如何增加自定义icon图标

分类:MUI

mui如何增加自定义icon图标
===
mui框架遵循极简原则,在icon图标集上也是如此,mui仅集成了原生系统中最常用的图标;其次,mui中的图标并不是图片,而是字体,至于为什么使用字体图标而不是图片,相信web开发者多少都有所了解,简单列举几条:

  • 多个图标字体合成一个字体文件,避免每张图片都需要联网请求;
  • 字体可任意缩放,而图片放大会失真、缩小则浪费像素;
  • 可通过css任意改变颜色、设置阴影及透明效果;

在实际项目中,开发者难免会需要自定义图标,此时该如何操作呢?本文以阿里巴巴矢量图标库为例(同样的网站有很多,比如icomoon,欢迎热心用户分享其它平台的使用方法),介绍一种用户自定义图标的方法,假设我们要做一个电商项目,需要补充男装、女装、购物车三个图标,如下为分步实现操作;

登录

浏览器访问阿里巴巴矢量图标库官网,选择登录方式,可直接使用新浪微博账号登录;

搜索图标

在右上角搜索“男装”,会列出当前网站上的所有男装图标,如下:
image
选择自己喜欢的图标,点击,会添加到右上角的购物车中,如下:
image
同样的方式分别搜索选择女装、购物车图标,结果如下:
image
之后点击“存储为项目”,输入项目名字,例如“mui-icon-custom”,点击“存储”按钮后,会跳转到项目管理页面,如下图所示:
image

下载字体

点击“下载到本地”按钮,会将合并后的字体文件及自动生成的css全部下载,如下:
image

修改css

默认的css代码如下:

@font-face {font-family: "iconfont";  
  src: url('iconfont.eot'); /* IE9*/  
  src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */  
  url('iconfont.woff') format('woff'), /* chrome、firefox */  
  url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/  
  url('iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */  
}  

.iconfont {  
  font-family:"iconfont" !important;  
  font-size:16px;  
  font-style:normal;  
  -webkit-font-smoothing: antialiased;  
  -webkit-text-stroke-width: 0.2px;  
  -moz-osx-font-smoothing: grayscale;  
}  

.icon-nanzhuang:before { content: "\e600"; }  

.icon-nvzhuang:before { content: "\e601"; }  

.icon-gouwuche:before { content: "\e602"; }

我们可稍作如下修改:

  • 为保证和mui目录结构统一,建议将字体文件放在fonts目录下,这样我们需要修改@font-face下得url属性;
  • 只兼容iOS和Android版本的话,我们仅需要ttf格式的字体即可,其它字体可以删除;同时,我们也仅需保留-webkit前缀语法,-moz前缀部分可以删除;

修改后的css代码如下:

    @font-face {font-family: "iconfont";  
        src:url('../fonts/iconfont.ttf') format('truetype'); /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/  
    }  

    .iconfont {  
        font-family:"iconfont" !important;  
        font-size:16px;  
        font-style:normal;  
        -webkit-font-smoothing: antialiased;  
        -webkit-text-stroke-width: 0.2px;  
    }  

    .icon-nanzhuang:before { content: "\e600"; }  

    .icon-nvzhuang:before { content: "\e601"; }  

    .icon-gouwuche:before { content: "\e602"; }

集成mui

将iconfont.css及iconfont.ttf两个文件分别拷贝到mui工程css及fonts目录下,然后即可在mui中引用刚生成的字体图标,我们以选项卡为例,代码如下:

    <nav class="mui-bar mui-bar-tab">  
        <a class="mui-tab-item mui-active">  
            <span class="mui-icon iconfont icon-nanzhuang"></span>  
            <span class="mui-tab-label">男装</span>  
        </a>  
        <a class="mui-tab-item">  
            <span class="mui-icon iconfont icon-nvzhuang"></span>  
            <span class="mui-tab-label">女装</span>  
        </a>  
        <a class="mui-tab-item">  
            <span class="mui-icon iconfont icon-gouwuche"></span>  
            <span class="mui-tab-label">购物车</span>  
        </a>  
        <a class="mui-tab-item">  
            <span class="mui-icon mui-icon-gear"></span>  
            <span class="mui-tab-label">设置</span>  
        </a>  
    </nav>

主要代码:将mui默认的icon(如mui-icon-home)替换成iconfont icon-nanzhuang,修改后预览效果如下:

image

127 赞 关注 分享
liozeeho elaine 有毒葡萄 Sheep stock2 candice 一气三清 安安的eHome jacktom 一瓢哥会狮吼功 Kid 王彦坡 NyxFang wenju 唐唐 DIOGO 徐梓萱 懵坚 thyiad 佳人逝水丶 LOL乌迪尔 X丶Blade 真的老白 明亮 ming300 Back faker 闪闪 tolerious peter_yu Xiao小树 whosmyqueen YumeHana Jimmy_p117 稳稳 我兜兜有糖 温叶 欲风 ayone 大胖子 Miss Visionary farce 有光 好冷 yaohuiQiu chen214123158 肥陈 l***@boholo.com l***@126.com

要回复文章请先登录或注册

柯南20116

柯南20116

我这里只保留了 iconfont.ttf文件 但是我的 iconfont.css 文件和他的不同

@font-face {font-family: "iconfont";
src: url('../fonts/iconfont.eot?t=1498718638825#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/iconfont.ttf?t=1498718638825') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('../fonts/iconfont.svg?t=1498718638825#iconfont') format('svg'); /* iOS 4.1- */
}

.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

.icon-nanzhuang:before { content: "\e600"; }

.icon-nvzhuang:before { content: "\e640"; }

.icon-wode:before { content: "\e63c"; }

.icon-shezhi:before { content: "\e646"; }

.icon-shouji:before { content: "\e67e"; }

.icon-qicheqianlian-:before { content: "\e618"; }



注意下面的内容!!!
@font-face {font-family: "iconfont";
src: url('../fonts/iconfont.eot?t=1498718638825#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/iconfont.ttf?t=1498718638825') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('../fonts/iconfont.svg?t=1498718638825#iconfont') format('svg'); /* iOS 4.1- */
}

我这里保留了 这些文件 那些显示框图标可以正常显示了
说明: 1 我的平台是小米2a 安卓4.4.4
2017-06-29 16:17
c***@163.com

c***@163.com

大家不要想的太复杂了
1.下载选好的图标,注意:下载到本地的时候选择Font class.而不是Unicode!!!!
2.把iconfont.css和iconfont.ttf放入到css文件夹和font文件夹下面。
3.在iconfont.css里面只需要把注释为/* chrome, firefox, opera, Safari, Android, iOS 4.2+*/留着,更改里面的路径url(../iconfont.ttf)有的后面会有问好之类的,不用动,就单单改一下路径。注意前面的Src:还有后面的;
4.完成,over
2017-06-27 15:25
容若思雪

容若思雪

回复 容若思雪 :
问题找到了,是我自己修改了icon的颜色导致的哦。。。
2017-05-10 09:11
容若思雪

容若思雪

恩已经学会基本的简单应用,底下的字体点击后会变颜色,但是图标不会跟着变颜色呢
2017-05-10 09:10
1***@qq.com

1***@qq.com

还需要在页头加上link 引入iconfont.css 就可以成功了
2017-04-10 15:43
2***@qq.com

2***@qq.com

楼主,如果要使用在线字体图标链接,而不下载怎么办,求解答
2017-04-06 13:13
2***@qq.com

2***@qq.com

我出现小框框 是因为照抄了‘\e600’ 下载自己想要的字体以后 打开demo.html F12查看content是多少
2017-03-24 15:15
1***@qq.com

1***@qq.com

回复 栗俊义 :
上面修改的是iconfont.css
2017-03-22 16:19
3***@qq.com

3***@qq.com

按照教程是可以实现的,首先检查程序是不是有错误,还有就是你是否没有引入对应的<link rel="stylesheet" href="../css/iconfont.css" />文件。仔细检查下
2017-03-09 14:13
1***@163.com

1***@163.com

我需要新增加几个iconfont,又重新生成.ttf文件,并且现有的项目不是我创建的。原有的.ttf文件怎么操作(怎么整合)。求助
2017-02-27 18:25