pokemonUI项目——Button组件

52 阅读1分钟

效果预览:

截屏2022-09-22 14.24.54.png

需求分析:

自定义一款区别于默认样式的button按钮,支持常规,文本,链接等三种主题,支持大中小三种尺寸,支持常规,重要,危险三种等级,以及禁用disabled和加载中loading的样式。

API设计:

<button class="pokemon-button" :class="classes" :disabled="disabled">

使用:class来对button的样式进行动态绑定,从而支持不同的class支持不同的样式。

代码实现

根据我们的需求分析,我们需要对主题,尺寸,等级进行设置。因为每种分类都对应三种不同的样式,所以我们需要对其进行计算。

先通过props将这些对应的变量传给外部的组件,并设置一个初始的值。

截屏2022-09-22 14.32.25.png

我们再通过Vue3的setup对其进行设置。 经过分析,我们已经得出需要将size,theme,level进行computed操作,所以

截屏2022-09-22 14.35.09.png 同时设计好对应的css,

截屏2022-09-22 14.36.02.png

截屏2022-09-22 14.36.22.png

在外部的字组件中,我们可以设置类了,

主题

<Button theme="link" >你好</Button>
<Button theme="link" style="background: #e8d59e">你好</Button>
<Button theme="text">你好</Button>

尺寸

<Button size="big">大号的</Button>
<Button>标准的</Button>
<Button size="small">小号的</Button>

等级

<Button level="main">主要按钮</Button>
<Button>普通按钮</Button>
<Button level="danger">危险按钮</Button>

disabled

<Button disabled>禁用按钮</Button>

loading

<Button loading>加载中</Button>