组件
<template><view class="pk-detail-con"><i class="lightning" :style="{ left: line+ '%' }"></i><i class="acimgs" :style="{ left: line+ '%' }"></i><view class="progress"><view class="progress-bar" :style="{ width: line + '%'}"></view><span class="team-name team-l"> { { pkData.left } } </span><span class="team-name team-r"> { { pkData.right } } </span></view></view>
</template><script>export default { name: "pk-bar",props: { pkData: { type:Object,default:()=>( { } ) } } ,data() { return { line : 50, } ; } ,mounted() { let { left, right } = this.pkData; if (left >= right) { this.line = ( left /( right + left) * 100 ) .toFixed ( 2) ; } else { this.line = ( 100 - ( right / ( right + left) * 100) ) .toFixed ( 2) ; } } }
</script><style lang="less">
.pk-detail-con { position : relative; margin : 30rpx auto 20rpx; } .progress { width : 100%; height : 46rpx; overflow : hidden; border-radius : 20rpx; background : linear-gradient ( 142deg, #7eb2fc, #4391fe) ; } .progress-bar { position : relative; height : 46rpx; text-align : left; background : linear-gradient ( 135deg, #fe8130, #fda461) ; } .progress,.progress-bar { position : relative; } // .lightning { // position : absolute; // top : -40rpx; // z-index : 9; // width : 70rpx; // height : 140rpx; // float : right; // margin-right : -12rpx; // background : url ( "./progress.png" ) no-repeat center; // background-size : cover; // transform : translateX ( -20rpx) ; // } // .acimgs { // position : absolute; // bottom : 0; // width : 58rpx; // height : 60rpx; // z-index : 9; // background : linear-gradient ( -135deg, #58e3ff, #0fb9ff) ; // clip-path : polygon ( 0 0, 70% 0, 25% 100%, 0% 100%) ; // transform : translateX ( -10rpx) ; // } .team-name { position : absolute; top : 0; line-height : 46rpx; color : #f3eee1; letter-spacing : 1rpx; font-size : 24rpx; } .team-l { left : 23rpx; } .team-r { right : 23rpx; } </style>
使用
<pk-bar : pkData="pkData" ></pk-bar>
js
<script>
import pkBar from "@/components/pk-bar/pk-bar.vue"
export default { components: { pkBar} ,data() { return { pkData: { left : 20, right : 30} } ; } ,methods: { }
} ;
</script>