Icon

图标组件,目前使用 Ratchet 的字体图标,包含 40 个常用图标。

组件

Icon

<Icon> 组件。

Props

component
PropType: node

组件使用的元素,默认为 span

name
PropType: enum('back', 'bars', 'caret', 'check', 'close', 'code', 'compose', 'download', 'edit', 'forward', 'gear', 'home', 'info', 'list', 'more-vertical', 'more', 'pages', 'pause', 'person', 'play', 'plus', 'refresh', 'search', 'share', 'sound', 'sound2', 'sound3', 'sound4', 'star-filled', 'star', 'stop', 'trash', 'up-nav', 'up', 'right-nav', 'right', 'down-nav', 'down', 'left-nav', 'left')

图标名称。

href
PropType: string

如果设置 href 属性将忽略 component 属性,渲染为 <a>

图标字体定制

如果内置的图标不能满足需求,可以通过 IconMoon阿里巴巴矢量图标库 等工具生成图标字体,替换内置图标。

流程如下:

  • 通过上述或其他工具生成图标字体文件;
  • 获取 Amaze UI Touch 源码,修改 Sass 变量,重新编译 CSS。

为方便管理,AMT 提供了一个专门供用户定义变量的文件 src/scss/_user.scss。添加下面两个变量,覆盖内置图标样式。

  1. $icon-fonts: (
  2. // font-family 中使用的字体名称
  3. icomoon: (
  4. weight: normal,
  5. style: normal,
  6. // 自定义字体的路径
  7. src: unquote(
  8. 'url("icomoon.woff") format("woff"),
  9. url("icomoon.ttf") format("truetype"),
  10. url("icomoon.svg#icomoon") format("svg");'
  11. )
  12. ),
  13. // 可以按照上面的格式继续添加其他字体
  14. );
  15. // 图标名称和 Unicode 编码映射
  16. // 注意:图标名称不能重名
  17. $icons: (
  18. back: \e80a,
  19. bars: \e80e,
  20. );

修改变量完成以后,执行 npm run build 编译,定制的 CSS 文件位于 dist 目录下。

示例

  1. import React from 'react';
  2. import {
  3. Container,
  4. Grid,
  5. Col,
  6. Icon,
  7. Group,
  8. } from 'amazeui-touch';
  9. const icons = ['back', 'bars', 'caret', 'check', 'close', 'code', 'compose', 'download', 'edit', 'forward', 'gear', 'home', 'info', 'list', 'more-vertical', 'more', 'pages', 'pause', 'person', 'play', 'plus', 'refresh', 'search', 'share', 'sound', 'sound2', 'sound3', 'sound4', 'star-filled', 'star', 'stop', 'trash', 'up-nav', 'up', 'right-nav', 'right', 'down-nav', 'down', 'left-nav', 'left'];
  10. const IconExample = React.createClass({
  11. render() {
  12. return (
  13. <Container {...this.props}>
  14. <p className="padding">
  15. 下面的宫格基于 Grid 组件实现,具体代码参见 Icon 文档。
  16. </p>
  17. <Grid avg={4} bordered className="sk-icons text-center">
  18. {
  19. icons.map((icon, i) => {
  20. return (
  21. <Col key={i}>
  22. <Icon name={icon} key={i}></Icon>
  23. <div className="sk-icon-name text-truncate">
  24. {icon}
  25. </div>
  26. </Col>
  27. );
  28. })
  29. }
  30. </Grid>
  31. <br />
  32. <br />
  33. </Container>
  34. );
  35. }
  36. });
  37. export default IconExample;

DemoCopy

Version: 1.0.0

原文: http://t.amazeui.org/#/docs/icon