直播app开发技术,qq排名优化网站,如何建设一个稳定的网站,引导交互 网站element-ui button 源码分享#xff0c;基于对源码的理解#xff0c;编写一个简单的 demo#xff0c;主要分三个模块来分享#xff1a; 一、button 组件的方法。
1.1 在方法这块#xff0c;button 组件内部通过暴露 click 方法实现#xff0c;具体如下#xff1a; 二、…element-ui button 源码分享基于对源码的理解编写一个简单的 demo主要分三个模块来分享 一、button 组件的方法。
1.1 在方法这块button 组件内部通过暴露 click 方法实现具体如下 二、button 组件的计算属性。
2.1 button 组件当中使用的三个计算属性如下 三、button 组件的属性。
通过官网我们知道 button 有 size、type、plain、round、circle、loading、disabled、icon、autofocus、native-type 这些属性那么它是怎么通过传入的这些属性来控制按钮样式的呢让我们通过对源码的探索来破解它吧。 3.1 size 属性一般控制按钮的大小它的尺寸有三种 medium / small / mini我们可以在源码当中找到这些设置如下图所示 3.1.1 通过上图我们知道真正控制 button 尺寸的并不完全是 size 属性那么还有什么其他影响因素呢通过搜索我们在 watch 里面找到了 buttonSize 方法源码里 buttonSize 方法的返回值来源于三个变量优先使用所传入的 size 变量如下图 3.1.2 通过对 buttonSize 打印可以看到以下信息如下图所示 3.1.3 this._elFormItemSize 在哪里可以找到作用是什么 3.1.4 上面说了一堆有人可能会迷惑找这些东西干什么用呢又能证明什么呢莫慌多一丢丢儿耐心往下看哈。 3.1.5 this.$ELEMENT 这个是全局的变量在 /examples/entry.js 文件中进行全局设置 3.1.6 简单总结一下 button 按钮 size 属性
button 按钮的 size 若传则取所传的值button 按钮的 size 未传且不在 form 表单中默认取 middlebutton 按钮的 size 为传且在 form 表单中且 form 表单有设置 size这取 form 表单的 sizebutton 按钮的 size 未传且不在 form 表单中但设置了全局变量 $ELEMENT.size则取全局变量中的 size 3.2 type 属性控制按钮的样式类型有 primary / success / warning / danger / info / text
3.2.1 通过传入 type 值样式表中有之对应的样式如下图 上面的样式翻译过来大致是这样的
.el-button--primary:first-child { border-right-color: rgba($--color-white, 0.5);
} .el-button--primary:last-child { border-left-color: rgba($--color-white, 0.5);
} .el-button--primary:not(:first-child):not(:last-child) { border-left-color: rgba($--color-white, 0.5); border-right-color: rgba($--color-white, 0.5);
} .el-button--success:first-child { border-right-color: rgba($--color-white, 0.5);
} .el-button--success:last-child { border-left-color: rgba($--color-white, 0.5);
} .el-button--success:not(:first-child):not(:last-child) { border-left-color: rgba($--color-white, 0.5); border-right-color: rgba($--color-white, 0.5);
} .el-button--warning:first-child { border-right-color: rgba($--color-white, 0.5);
} .el-button--warning:last-child { border-left-color: rgba($--color-white, 0.5);
} .el-button--warning:not(:first-child):not(:last-child) { border-left-color: rgba($--color-white, 0.5); border-right-color: rgba($--color-white, 0.5);
} .el-button--danger:first-child { border-right-color: rgba($--color-white, 0.5);
} .el-button--danger:last-child { border-left-color: rgba($--color-white, 0.5);
} .el-button--danger:not(:first-child):not(:last-child) { border-left-color: rgba($--color-white, 0.5); border-right-color: rgba($--color-white, 0.5);
} .el-button--info:first-child { border-right-color: rgba($--color-white, 0.5);
} .el-button--info:last-child { border-left-color: rgba($--color-white, 0.5);
} .el-button--info:not(:first-child):not(:last-child) { border-left-color: rgba($--color-white, 0.5); border-right-color: rgba($--color-white, 0.5);
} 3.2.2 plain 属性是否朴素按钮布尔类型默认 false 上面的样式翻译过来大致是这样的
.is-plain,
.is-plain:hover,
.is-plain:focus { background-color: $--color-white; border-color: $--button-disabled-border-color; color: $--button-disabled-font-color;
} 3.2.3 round 属性是否圆角按钮布尔类型默认 false 3.2.4 circle 属性是否圆形按钮布尔类型默认 false 3.2.5 loading 属性是否加载中状态布尔类型默认 false 注意如果使用了自定义图标 icon可以使用 element-ui icon 组件里面有的图标也可以自定义一个图标其实在这里传的 icon 就是 class通过上面的图很容易看出。 3.2.6 disabled 属性是否禁用状态布尔类型默认 false 补充说明buttonDisabled
tip1在 Vue 2 中this.$options 是一个对象它包含了组件的初始化选项。这些选项是组件定义时通过 option 属性传入的。通过 this.$options你可以访问到组件的配置信息包括生命周期钩子函数、自定义方法、属性等。
tip2Vue2的 propsData 主要用于在组件初始化时传递数据。propsData 选项是一个对象其中包含了要传递给组件的属性值。这些属性值可以在组件的data函数中被访问和使用。 上面的样式翻译过来大致是这样的
.disabled,
.disabled:hover,
.disabled:focus { color: $--button-disabled-font-color; cursor: not-allowed; background-image: none; background-color: $--button-disabled-background-color; border-color: $--button-disabled-border-color;
} .el-button--text.disabled { background-color: transparent;
} .is-plain.disabled,
.is-plain.disabled:hover,
.is-plain.disabled:focus { background-color: $--color-white; border-color: $--button-disabled-border-color; color: $--button-disabled-font-color;
} 3.2.7 disabled 属性图标类名string 类型默认 3.2.8 autofocus 属性是否默认聚焦布尔类型默认 flase 3.2.9 native-type 属性原生 type 属性string 类型button / submit / reset默认 button 3.2.9 button slot 卡槽分发 举个栗子 总结
看似简单的 button 按钮看完源码后会发现里面会有很多值得我们去学习去思考的知识因此希望可以一直保持好奇心将剩下的组件一并研究明白并分享出来。
关于 button 按钮的源码分享部分就先到这里了由于篇幅比较长这里就不再做基于源码后的 demo 分享了有时间下次专门写一篇关于基于源码理解后的 button demo 分享。 文章转载自: http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn http://www.morning.cdygl.com.gov.cn.cdygl.com http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn http://www.morning.zhiheliuxue.com.gov.cn.zhiheliuxue.com http://www.morning.jmmz.cn.gov.cn.jmmz.cn http://www.morning.tymwx.cn.gov.cn.tymwx.cn http://www.morning.bpmtq.cn.gov.cn.bpmtq.cn http://www.morning.ncwgt.cn.gov.cn.ncwgt.cn http://www.morning.rrdch.cn.gov.cn.rrdch.cn http://www.morning.cprls.cn.gov.cn.cprls.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.mmzhuti.com.gov.cn.mmzhuti.com http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn http://www.morning.brwp.cn.gov.cn.brwp.cn http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.pjzcp.cn.gov.cn.pjzcp.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.dmwbs.cn.gov.cn.dmwbs.cn http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn http://www.morning.hqllj.cn.gov.cn.hqllj.cn http://www.morning.ubpsa.cn.gov.cn.ubpsa.cn http://www.morning.nldsd.cn.gov.cn.nldsd.cn http://www.morning.clwhf.cn.gov.cn.clwhf.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.nytgk.cn.gov.cn.nytgk.cn http://www.morning.ntyks.cn.gov.cn.ntyks.cn http://www.morning.clndl.cn.gov.cn.clndl.cn http://www.morning.dmsxd.cn.gov.cn.dmsxd.cn http://www.morning.fhddr.cn.gov.cn.fhddr.cn http://www.morning.rszbj.cn.gov.cn.rszbj.cn http://www.morning.sgjw.cn.gov.cn.sgjw.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.ckhyj.cn.gov.cn.ckhyj.cn http://www.morning.dgsx.cn.gov.cn.dgsx.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.wypyl.cn.gov.cn.wypyl.cn http://www.morning.lqtwb.cn.gov.cn.lqtwb.cn http://www.morning.bnygf.cn.gov.cn.bnygf.cn http://www.morning.yppln.cn.gov.cn.yppln.cn http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn http://www.morning.tjpmf.cn.gov.cn.tjpmf.cn http://www.morning.sbczr.cn.gov.cn.sbczr.cn http://www.morning.clyhq.cn.gov.cn.clyhq.cn http://www.morning.tgqzp.cn.gov.cn.tgqzp.cn http://www.morning.jwsrp.cn.gov.cn.jwsrp.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.zydr.cn.gov.cn.zydr.cn http://www.morning.beeice.com.gov.cn.beeice.com http://www.morning.rqdx.cn.gov.cn.rqdx.cn http://www.morning.njntp.cn.gov.cn.njntp.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.qjbxt.cn.gov.cn.qjbxt.cn http://www.morning.wqbhx.cn.gov.cn.wqbhx.cn http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn http://www.morning.mrqwy.cn.gov.cn.mrqwy.cn http://www.morning.pnntx.cn.gov.cn.pnntx.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.rbknf.cn.gov.cn.rbknf.cn http://www.morning.smhtg.cn.gov.cn.smhtg.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.rqjl.cn.gov.cn.rqjl.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.xesrd.com.gov.cn.xesrd.com http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn http://www.morning.lchtb.cn.gov.cn.lchtb.cn http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn http://www.morning.hknk.cn.gov.cn.hknk.cn http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn http://www.morning.mgbsp.cn.gov.cn.mgbsp.cn http://www.morning.dplmq.cn.gov.cn.dplmq.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.yuanshenglan.com.gov.cn.yuanshenglan.com http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.xwlmr.cn.gov.cn.xwlmr.cn