vue 自定义步骤条组件 自定义图片(icon)

话不多说直接上组件代码

组件  Steps.vue

css
// css
<style lang="less" scoped>
    .step01, .step02, .step03, .step04, .step05, .step06{
        width: 20px;
        height: 20px;
        background-size: 100% 100%;
        display: inline-block;
    }
    .step01{
        background-image: url("../assets/image/Steps/Steps5.png");
    }
    .step02{
        background-image: url("../assets/image/Steps/Steps6.png");
    }
    .step03{
        background-image: url("../assets/image/Steps/Steps1.png");
    }
    .step04{
        background-image: url("../assets/image/Steps/Steps2.png");
    }
    .step05{
        background-image: url("../assets/image/Steps/Steps4.png");
    }
    .step06{
        background-image: url("../assets/image/Steps/Steps3.png");
    }
    .li_active {
        .step01{
            background-image: url("../assets/image/Steps/StepsActive5.png");
        }
        .step02{
            background-image: url("../assets/image/Steps/StepsActive6.png");
        }
        .step03{
            background-image: url("../assets/image/Steps/StepsActive1.png");
        }
        .step04{
            background-image: url("../assets/image/Steps/StepsActive2.png");
        }
        .step05{
            background-image: url("../assets/image/Steps/StepsActive4.png");
        }
        .step06{
            background-image: url("../assets/image/Steps/StepsActive3.png");
        }
    }
    .steps {
        position: relative;
    }
    /*步骤描述*/
    .steps li {
        list-style-type: none;
        font-size: 12px;
        text-align: center;
        width: 15%;
        position: relative;
        float: left;
        height: 66px;
        p{
            width: 35px;
            height: 35px;
            border: 1px solid rgba(216,216,216,1);
            border-radius: 50%;
            line-height: 43px;
            position: absolute;
            top: 0;
            left: 20px;
            background-color: #fff;
        }
        .text{
           position: absolute;
            bottom: 0;
            left: 20px; 
        }
        
        .li_active{
            border-color: rgba(41,156,245,1);
            color: rgba(41,156,245,1);
        }
    }

    /*连接线*/
    .steps li ~ li:after {
        content: "";
        width: 100%;
        height: 2px;
        border: 1px solid rgba(41,156,245,1);
        background-color: #fff;
        position: absolute;
        left: -50%;
        top: 15px;
        z-index: -1; /*放置在数字后面*/
    }

    /*将当前/完成步骤之前的数字及连接线变绿*/
    .steps li.active:before,
    .steps li.active:after {
        border: 1px solid rgba(41,156,245,1);
        background-color: #fff;
    }

    /*将当前/完成步骤之后的数字及连接线变灰*/
    .steps li.active ~ li:before,
    .steps li.active ~ li:after {
        border: 1px solid rgba(216,216,216,1);
        background-color: #fff;
    }
</style>
html
// html
<template>
    <div>
        <ul class="steps">
            <li
                v-for="(item,index) in SetData"
                :key="index"
                :class="{'active':Steps-1===index}"
            >
                <p :class="{'li_active':Steps>index}">
                    <i :class="item.icon"></i>
                </p>
                <div class="text" :class="{'li_active':Steps>index}">
                    {{item.title}}
                </div>
            </li>
        </ul>
    </div>
</template>
js
// js
<script>
export default {
    name:'Steps',
    props:{
        Steps:{
            type:Number,//数据类型
            default:1//默认值
        },//当前激活个数
    },
    data() {
        return {
            SetData : [
                {
                    title:'已立案',
                    icon:'step01'
                },
                {
                    title:'已立案',
                    icon:'step02'
                },
                {
                    title:'已立案',
                    icon:'step03'
                },
                {
                    title:'已立案',
                    icon:'step04'
                },
                {
                    title:'已立案',
                    icon:'step05'
                },
                {
                    title:'已立案',
                    icon:'step06'
                },
            ],
        }
    },
    watch: {},
    mounted() {},
    computed: {},
    components: {},
    methods: {

    },
}
</script>
实现效果

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想写前端的前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值