进度条,步骤条,

1,记录一次步骤条来实现人数不同显示的进度不同

效果如图:

废话不多说 上代码:

html文件:

 <div class="gift">
        <p class="prenum">已有
        <countTo
            :startVal='0'
            :endVal='userNums'
            :duration='3000'/>
            位武魂使共赴苍岚</p>
        <div class="bg_range">
            <div class="awards-progress-wrap">
                <div class="awards-progress">
                    <div class='awards-progress-cur'
                        :class="classObject"
                        style="transition: all 1s ease 0s;"></div>
                    <ol class="awards-progress-points">
                        <li
                            @click="scanList(0)"
                            :class="['down',activeNum === 0? 'activeLi' : '']">
                            3W预约
                        </li>
                        <li
                            @click="scanList(1)"
                            class="up"
                            :class="['down',activeNum === 1? 'activeLi' : '']"
                        >
                            5W预约
                        </li>
                        <li
                            @click="scanList(2)"
                            :class="['down',activeNum === 2? 'activeLi' : '']"
                            class="down">
                            10W预约
                        </li>
                        <li
                            @click="scanList(3)"
                            :class="['down',activeNum === 3? 'activeLi' : '']"
                            class="up">
                            20W预约
                        </li>
                        <li
                            @click="scanList(4)"
                            :class="['down',activeNum === 4? 'activeLi' : '']"
                            class="down">
                            30W预约
                        </li>
                    </ol>
                    <ul class="awards-progress-text">
                        <li class="item1 unreach finished">3W预约</li>
                        <li class="item2 unreach finished">5W预约</li>
                        <li class="item3 unreach finished">10W预约</li>
                        <li class="item4 unreach">20W预约</li>
                        <li class="item5 unreach">30W预约</li>
                    </ul>
                </div>
            </div>
        </div>
        <div class="gift_container">
            <div class="gift_detail" v-for="item in dataInfo" :key="item.imgUrl">
                <div class="dj">
                    <img :src="item.imgUrl">
                    <span>{{item.num}}</span>
                </div>
                <p>{{item.name}}</p>
            </div>
        </div>
    </div>

 css 代码:

.awards-progress {
        width: 100%;
        height: 75%;
        border-radius: 6px;
        position: relative;
        top: 1px;
    }

    .awards-progress-cur {
        height: 100%;
        width: 0;
        border-radius: 6px;
        background: linear-gradient(to right, #b5ddfa 0, #a3d4f7 50%, #4b97cf 100%);
    }

    .awards-progress-cur.item0 {
        width: 10%;
    }

    .awards-progress-cur.item1 {
        width: 20%;
    }

    .awards-progress-cur.item2 {
        width: 40%;
    }

    .awards-progress-cur.item3 {
        width: 65%;
    }

    .awards-progress-cur.item4 {
        width: 90%;
    }

    .awards-progress-cur.item5 {
        width: 98%;
    }

    .awards-progress-points {
        position: absolute;
        top: -2.5px;
        left: 0;
    }

    .awards-progress-points li {
        width: 11px;
        height: 11px;
        border: 2px solid #b2d8f3;
        background-color: #fff;
        border-radius: 50%;
        position: absolute;
        top: 0;
        font-size: 0;
    }

    .awards-progress-points li:after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 5.5px;
        height: 5.5px;
        background-color: #b2d8f3;
        border-radius: 50%;
    }

    .awards-progress-points li:nth-child(1) {
        left: 20px;
    }

    .awards-progress-points li:nth-child(2) {
        left: 68px;
    }

    .awards-progress-points li:nth-child(3) {
        left: 132px;
    }

    .awards-progress-points li:nth-child(4) {
        left: 215px;
    }

    .awards-progress-points li:nth-child(5) {
        left: 293px;
    }

    .awards-progress-points li:before {
        content: "";
        display:block;
        width:0;
        height:0;
        border-style:solid;
        border-color:transparent;
        position:absolute;
        left: 50%;
        transform: translateX(-50%);
    }

    .awards-progress-points li.down:before {
        border-bottom-color: #4b97cf;
        top: 16px;
        border-width:0 3px 5px;
    }

    .awards-progress-points li.up:before {
        border-top-color: #4b97cf;
        top: -12px;
        border-width:5px 3px 0;
    }
    .awards-progress-points li.activeLi{
        border-color: rgb(240, 202, 121) !important
    }
    .awards-progress-points li.activeLi:after {
        background-color: rgb(240, 202, 121) !important
    }

    .awards-progress-text {
        position: absolute;
        top: 0;
        left: 0;
    }
    .awards-progress-text li {
        position: absolute;
        width: 50px;
        height: 12px;
        font-size: 12px;
        color: #21679B;
    }
    .awards-progress-text li:nth-child(odd) {
        top: 24px;
    }

    .awards-progress-text li:nth-child(even) {
        top: -24px;
    }
    .awards-progress-text li:nth-child(1) {
        left:8px;
    }
    .awards-progress-text li:nth-child(2) {
        left: 59px;
    }
    .awards-progress-text li:nth-child(3) {
        left: 118px;
    }
    .awards-progress-text li:nth-child(4) {
        left: 200px;
    }
    .awards-progress-text li:nth-child(5) {
        left: 281px;
    }
    .awards-progress-text li.finished {
        background-position-x: -.1rem;
    }

 简单实现:

ps有个弊端: 不能根据后端传入的数值来计算进度比例,只是写死的item来控制大概的进度,如果有更好的意见请留言给我 谢谢

 

posted @ 2019-05-07 18:04  sanye-疯序员  阅读(1162)  评论(0编辑  收藏  举报