记录--elementui源码学习之仿写一个el-button
创始人
2024-05-30 14:44:27

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

elementui源码学习之仿写一个el-button

本篇文章记录仿写一个el-button组件细节,从而有助于大家更好理解饿了么ui对应组件具体工作细节。本文是elementui源码学习仿写系列的又一篇文章,后续空闲了会不断更新并仿写其他组件。源码在github上,大家可以拉下来,npm start运行跑起来,结合注释有助于更好的理解

网站效果演示:ashuai.work:8888/#/myButton

GitHub仓库地址:github.com/shuirongshu…

什么是Button组件

按钮用于点击,一般是做事件的响应。

按钮封装效果图

1111.gif

按钮分类

  • 单一按钮
    • 默认按钮
    • 主题按钮(primary、success、warning、error)
    • 按钮大小(small、middle、big)
    • 按钮禁用(disabled)
    • 按钮加载(loading)
    • 按钮的图标位置(默认图标在按钮文字左侧)
    • 图标按钮(没有按钮文字)
    • 单一文字按钮
  • 按钮组(按钮组中有多个按钮)

默认按钮

默认按钮很简单,只是写一个最普通的样式即可

按钮的图标位置

默认从左往右排列(图标在左侧、文字在右侧),这里我们可以使用弹性盒的方向flexDirection属性,来控制从左往右还是从右往左排列

图标按钮和单一文字按钮

这两个也很简单,

  • 图标按钮注意加圆角的时机
  • 单一文字按钮的样式要预留设置一份即可

然后动态控制一下即可

按钮组

按钮组注意事项:

  • 首先将所有的按钮的圆角全部去掉(这样的话,所有的按钮都是方方正正的按钮了)
  • 然后单独给第一个按钮:first-of-type的左上角和左下角的圆角设置一下
  • 然后再给最后一个按钮last-of-type的右上角和右下角的圆角设置一下
  • 最后,按钮组之间需要有间隔,这里使用border-right做分割线
  • 最最后,再把最后一个按钮的右边框去掉即可,如下css代码
// 附上按钮组样式
.myButtonGroup > .myButton {border-radius: unset !important; // 给所有的按钮都去掉圆角border-right: 1px solid #fff; // 给按钮加上分隔线条
}
// 第一个按钮左侧圆角
.myButtonGroup > .myButton:first-of-type {border-top-left-radius: 5px !important; border-bottom-left-radius: 5px !important;
}
// 最后一个按钮的右侧圆角
.myButtonGroup > .myButton:last-of-type {border-top-right-radius: 5px !important;border-bottom-right-radius: 5px !important;border-right: none; // 同时,清除最后一个按钮的右侧边框
}

代码

复制粘贴即可使用,如果道友觉得代码帮忙到了您,欢迎给咱github仓库一个star哈😄

myButton组件


myButtonGroup组件




使用的时候


本文转载于:

https://juejin.cn/post/7182113902539309112

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 

相关内容

热门资讯

中信重工申请矿样试验装置相关专... 4月18日消息,国家知识产权局信息显示,中信重工机械股份有限公司申请一项名为“一种定量微细粒矿样柔性...
刺破“开票经济”的数字泡沫 最新发票数据显示,截至3月25日,今年违规招商引资企业较为集中的废弃资源综合利用、再生物资回收等六类...
兰州:筑牢食品药品安全防线 食品药品安全事关百姓身体健康和生命安全。自全省“三抓三促”行动开展以来,兰州市市场监督管理局聚焦食品...
同济等3家公司共同取得爆管侦测... 4月18日消息,国家知识产权局信息显示,同济大学、宁波水表(集团)股份有限公司、浙江宁水水务科技有限...
【聚焦教育家精神巡回宣讲】聆听...   4月16日,贵州省2026年教育家精神巡回宣讲暨“讲述我的育人故事”贵安大学城专场活动在贵州财经...