我是靠谱客的博主 谨慎外套,最近开发中收集的这篇文章主要介绍01 element-ui源码思路 el-button,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部