效果预览:
需求分析:
自定义一款区别于默认样式的button按钮,支持常规,文本,链接等三种主题,支持大中小三种尺寸,支持常规,重要,危险三种等级,以及禁用disabled和加载中loading的样式。
API设计:
<button class="pokemon-button" :class="classes" :disabled="disabled">
使用:class来对button的样式进行动态绑定,从而支持不同的class支持不同的样式。
代码实现
根据我们的需求分析,我们需要对主题,尺寸,等级进行设置。因为每种分类都对应三种不同的样式,所以我们需要对其进行计算。
先通过props将这些对应的变量传给外部的组件,并设置一个初始的值。
我们再通过Vue3的setup对其进行设置。 经过分析,我们已经得出需要将size,theme,level进行computed操作,所以
同时设计好对应的css,
在外部的字组件中,我们可以设置类了,
主题
<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>