FontAwesome出5啦
Qunar的很多图片都是用iconfont实现的, 我们有一套类似于fontawesome网站的yicon,
然而当初构建的时候,对于使用iconfont还是svg是很受争议的. 其结果自然iconfont胜出,而那时我见识到了svg对于制作模块化图标, 甚至是动画图标的潜力(SMIL,很遗憾后来为了CSS3,这一功能基本上无人问津了) ,这些对于svg唯一的缺点就是兼容性了.
看到FontAwesome的第5个版本推荐使用svg, 马上拿过来试试.
官方的React组件
当然也有Vue的, 安装 @fortawesome/fontawesome @fortawesome/fontawesome-free-solid @fortawesome/react-fontawesome (0.1.0-3以上有d.ts说明)
利用 create-react-app 快速建立工程
npx create-react-app awesome --scripts-version=react-scripts-ts
<FontAwesomeIcon icon={faCoffee}/>
直接使用,非常简单
新功能:变形
比如放大(grow)或者缩小(shrink), 后面的数字的单位是 1/16em.
<FontAwesomeIcon
{...{
icon: faCoffee,
border: true,
fixedWidth: true,
transform: "shrink-8",
}}
/>
上(up) 下(down) 左(left) 右(right) 垂直翻转(flip-v) 水平翻转(flip-h) 旋转(rotate)
新功能:遮罩
<Font
{...{
icon: faCoffee,
border: true,
fixedWidth: true,
transform: "shrink-8",
mask: faSquare,
}}
/>
新功能:图层
两个图标层叠
<span className="fa-layers fa-fw fa-border">
<Font
{...{
icon: faCircle,
}}
/>
<Font
{...{
icon: faCoffee,
transform: "shrink-7",
style: {
color: "#fff"
}
}}
/>
</span>
图标添加数字角标,默认右上(指定位置: fa-layers-{left|right}).
<span className="fa-layers fa-fw">
<Font
{...{
icon: faAlignJustify,
}}
/>
<span className="fa-layers-counter">1111</span>
</span>
叠加文字
<span className="fa-layers fa-fw">
<Font
{...{
icon: faSquare,
}}
/>
<span
{...{
className: "fa-layers-text",
style: {
color: "#fff"
}
}}
>
e
</span>
</span>
总结
FontAwesome 总的来看,不考虑兼容性的话的确可以使用, 而且随着emoji的推广, Material Design等各种设计模式的诞生, 彩色的可模块化的图标方案会逐渐替代现有的单色图标.