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

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

要回复文章请先登录注册

bluesky628

bluesky628

回复 符师傅 :
那就找个美工 做啊
2016-03-30 11:45
符师傅

符师傅

图标库都找不到我需要的图标该怎么做呢?
2016-03-28 15:02
Tim_Ke

Tim_Ke

关掉浏览器,重新再用chorme打开,反正我是这么做了,还有提示一下,安卓4.0一下版本不支持SVG
2016-03-22 10:47
farce

farce

收藏了,有用啊
2016-03-07 17:50
班门打虎

班门打虎

我也找这个问题很久,最终还是解决了.
由于是按提示照搬,当我们删除多余后会出现下列代码:
@font-face {font-family: "iconfont";
url('../fonts/iconfont.ttf') format('truetype'); /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
}

而我们需要在url 前面加入 src: 即可:
@font-face {font-family: "iconfont";
src:url('../fonts/iconfont.ttf') format('truetype'); /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
}
2016-03-03 11:16
Miss

Miss

mark
2016-03-02 14:51
jingxin

jingxin

可不可以合并到mui自带的字体里?不然还是会多请求一次啊
2016-03-01 07:25
诸葛胖子

诸葛胖子

回复 冷哥 :
css里面有个逗号需要改成分号
2016-02-03 00:53
UnclesHey

UnclesHey

回复 PandaJN :
我居然犯了跟你一样的错误
2016-02-02 15:39
ayone

ayone

我出现的问题是,Safari和chrome上的图标显示良好;但是android4.4(三星)上图标是乱码,android5.1(魅族)上图标不出现。求楼主解答啊指点我下。
2016-01-27 22:31