# el-button 使用自定义图标实践

ElementUI 图标按钮的用法如下:

<el-button type="primary" icon="el-icon-search">搜索</el-button>
<el-button size="mini" type="primary" icon="el-icon-search">搜索</el-button>

会产生这样的 DOM 结构:

<button type="button" class="el-button el-button--primary">
  <i class="el-icon-search"></i>
  <span>搜索</span>
</button>

# 自定义图标

以使用 IconFont 的图标为例,我们可以这样使用:

<el-button icon="iconfont icon-search">搜索</el-button>

这样生成的 DOM 结构如下:

<button type="button" class="el-button el-button--default">
  <i class="iconfont icon-search"></i>
  <span>搜索</span>
</button>

# 坑:自定义图标和文字挨的太近

下面这段代码 ElementUI 自带的 chalk 主题样式,这个选择器无法匹配 iconfont 图标:

.el-button [class*=el-icon-]+span {
  margin-left: 5px;
}

因此我们可以在项目中仿写一个适配 IconFont 的样式:

.el-button .iconfont+span {
  margin-left: 5px;
}

# 坑:图标大小不能自适应

<el-button> 可以用 size 属性调整大小,比如 <el-button size="mini"></button> 会对应 .el-button--mini { font-size: 12px; }

但 IconFont 的 font-size 是写死的:.iconfont { font-size: 16px; },为了让图标大小能自适应,我们覆盖这个样式。

.el-button .iconfont {
  font-size: inherit;
}