element-ui[2.15.x]源码从开始到放弃(三)-图标/按钮/链接

566 阅读1分钟

上一章我们讲了element的布局和容器,这章咱讲图标,按钮,链接

图标

element的图标是一种矢量图标,通过css的url引入相应字体图标库ttfwoff文件

font-family被定义为element-icons时,将会引入相关的字体图标库的样式

image.png

当标签的class存在前缀为el-icon-的属性时,将会添加如下图的属性,具体字体有el-icon-xxx决定

image.png

按钮

ButtonGroup

代码很简单,主要是将button隔离起来

image.png

css是通过IFC隔离样式,清除浮动,基准线居中,对里面的button进行浮动生成BFC,通过相对定位使z-index属性生效,可以生成层叠上下文并对button的样式进行修改

image.png

Button

Button主要是调整样式,样式在theme-chalk中已经定义了,当button定义了不同的类名,就会生成不同的样式

image.png

script:

  • inject:注入了elForm,elFormItem

image.png

  • props: 文档写的很明白了

image.png

  • computed: 按钮的大小优先级是props的size => 表单FormItem定义的size => 最后是全局设置的size

按钮是否禁用优先级根据props的disabled => 表单disabled

image.png

methods:

  • handleClick:点击按钮触发,执行$emit('click', evt),通知父组件

Link

Link主要也是调试样式,通过v-bind="$attrs"让开发者可以在组件上设置<a/>标签原生的属性

image.png

对外层div设置行内FFC,通过flex来实现垂直居中,设置相对定位是因为Link的下划线是通过伪元素绝对定位到下方,需要控制在组件中

image.png

image.png

script:

  • props: image.png
  • methods: handleClick是a标签点击事件的回调,当disabled为false并且href不为空,则触发$emit('click', event),通知父组件