概述
1.css样式的一种解耦的写法
- 以type为例,type有多种值,最中这值会反应到css上。在整个实现思路中没有出现if else 的判断
<el-button type="primary">主要按钮</el-button>
<el-button type="success">成功按钮</el-button>
<el-button type="info">信息按钮</el-button>
<el-button type="warning">警告按钮</el-button>
<el-button type="danger">危险按钮</el-button>
el-button中props定义的变量
props: {
// 主题类型 primary / success / warning / danger / info / text
type: {
type: String,
default: 'default'
},
}
- class的绑定操作,type的值由调用组件的使用者决定,这里将得到‘‘el-button–’ + type ’(比如:el-button–primary)
<button
class="el-button"
:class="[
type ? 'el-button--' + type : '',
]"
>
- 相应的css类,将被自动匹配上
.el-button--primary {
color: #fff;
background-color: #409eff;
border-color: #409eff;
}
.el-button--warning {
color: #fff;
background-color: #e6a23c;
border-color: #e6a23c;
}
2.css的属性值写法
- 以round为例
<el-button type="primary" round>主要按钮</el-button>
el-button中props定义的变量,
props: {
// 上面的写法 只有'round'属性名,这里必须为Boolean,这样round的值为true。
// 如果是其他类型,round会为空
round: Boolean,
}
- class的动态绑定操作,可以同时用两种写法。1.数组绑定,2.数组的项为一个对象(见vue文档)
<button
class="el-button"
:class="[
type ? 'el-button--' + type : '',
buttonSize ? 'el-button--' + buttonSize : '',
{
'is-round': round,
'is-circle': circle
}
]"
>
- 相应的css类
.el-button.is-round {
border-radius: 20px;
padding: 12px 23px;
}
3.动态判断插槽的值,去掉不必要的节点
具名插槽也可以做这种判断,当父组件中没有给值,就可以去掉
//$slots.default 包含了所有没有具字插槽的节点。
<span v-if="$slots.default"><slot></slot></span>
最后
以上就是谨慎外套为你收集整理的01 element-ui源码思路 el-button的全部内容,希望文章能够帮你解决01 element-ui源码思路 el-button所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复