当前位置: 首页 > news >正文

按钮样式统一

子组件

<template><div class="btn_box"><div :class="['btn',classType]"><slot name="btn"></slot></div></div>
</template><script setup>
import { computed, useAttrs } from 'vue';
defineOptions({// 定义组件选项,设置inheritAttrs为false,表示不自动将属性绑定到根元素上inheritAttrs: false
});let attrs = useAttrs();// 使用useAttrs()获取组件的属性
const classTypeList = ['primary', 'success', 'info', 'warning', 'danger'];// 定义一个包含所有可能类型的数组const classType = computed(() => {// 计算属性,用于根据传入的type属性返回对应的class类型let lowType = attrs.type.toLowerCase()    // 将type属性转换为小写if(!classTypeList.includes(lowType)) return 'info'    // 如果type属性不在classTypeList数组中,则返回'info'return lowType    // 否则返回type属性的小写形式
})</script><style lang="scss" scoped>
$btnClass: ('primary', 'success', 'info', 'warning', 'danger');
$btnColors: #409eff, #67c23a, #909399, #e6a23c, #f56c6c;
@for $i from 1 through length($btnColors) {$ClasStyle:nth($btnClass, $i);.btn_box{cursor: pointer;@extend .center;}.btn{border-radius: 10px;padding: 10px 15px;}.btn.#{$ClasStyle}{$color: nth($btnColors, $i);background: $color;color: #fff;&:hover{background: lighten($color: $color, $amount:10%);}&:active{background: darken($color: $color, $amount:10%);}&:disabled{background: lighten($color: $color, $amount:20%);color: lighten($color: $color, $amount:40%);}}
}
.center{display: flex;justify-content: center;align-items: center;
}
</style>

父组件

<template><Btnview :type="'primary'"><template v-slot:btn><div>998877</div></template></Btnview></template><script lang="ts" setup name="login">const Btnview = defineAsyncComponent(()=>import('../../components/button/button.vue'));//引入按钮组件</script>``<style lang="less" scoped>
</style>

相关文章:

  • 第二十一节:图像金字塔-高斯金字塔
  • 【即插即用涨点模块】RFAConv感受野注意力卷积:突破卷积参数共享瓶颈,感受野注意力重塑空间特征提取【附源码】
  • 从 TTS 到 TTRL:无标签数据强化学习探索与展望
  • SHAP分析!Transformer-BiLSTM组合模型SHAP分析,模型可解释不在发愁!
  • TypeScript 装饰器高级用法详解
  • P10225 [COCI 2023/2024 #3] Milano C.le|普及
  • 深入浅出之STL源码分析6_模版编译问题
  • Kubernetes .yaml 文件配置
  • Kubernetes 集群部署应用
  • C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理
  • 17前端项目----支付弹框
  • Three.js + React 实战系列 - 页脚区域 Footer 组件 ✨
  • vector--OJ1
  • Windows系统更新一键禁用:WindowsUpdateBlocker轻量级工具推荐
  • Typescript 源码核心流程
  • LeetCode 热题 100 101. 对称二叉树
  • 79.评论日记
  • UOJ 164【清华集训2015】V Solution
  • 元数据分类
  • 并发笔记-给数据上锁(二)
  • 2025年度十大IP!IP SH荣膺文化综合类TOP10
  • 5天完成1000多万元交易额,“一张手机膜”畅销海内外的启示
  • 经济日报刊文:品牌经营不能让情怀唱“独角戏”
  • 异域拾异|大脚怪的形状:一项神秘社会学研究
  • 铲屎官花5万带猫狗旅行,宠旅生意有多赚?
  • 正荣地产:前4个月销售14.96亿元,控股股东已获委任联合清盘人