<template>
<div class="box-itemG" :class="{'change': change}">
<li :class="{'number-itemG': !isNaN(item), 'mark-item': isNaN(item) }"
v-for="(item,index) in orderNum"
:key="index">
<span v-if="!isNaN(item)">
<i class="numberI" ref="numberItem">0123456789</i>
</span>
<span class="comma" v-else>{{item}}</span>
</li>
</div>
</template>
<script>
export default {
name: "index",
props:{
order: {
type: Number,
default:0
},
},
watch:{
order:{
handler(n,o){
if (n != o) {
this.change = true
let strArr = n.toString()
this.orderNum = JSON.parse(JSON.stringify(strArr.split("")))
this.$nextTick(() => {
this.setNumberTransform()
})
setTimeout(() => {
this.change = false
}, 200)
}
},
immediate:true
},
},
data(){
return {
orderNum: [],
change: false
}
},
methods:{
setNumberTransform () {
const numberItems = this.$refs.numberItem
const numberArr = this.orderNum.filter(item => !isNaN(item))
for (let index = 0; index < numberItems.length; index++) {
const elem = numberItems[index]
elem.style.transform = `translate(-50%, -${numberArr[index] * 10}%)`
}
},
},
mounted() {
this.setNumberTransform();
}
}
</script>
<style scoped lang='scss'>
.box-itemG {
position: relative;
// height: 18px;
font-size: 14px ;
line-height: 14px;
text-align: center;
list-style: none;
color: #333;
writing-mode: vertical-lr;
text-orientation: upright;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
user-select: none;
overflow: hidden;
margin: auto;
// left: 50%;
}
.change {
background-color: #fec6c6;
}
.number-itemG {
width: 7px;
height: 14px;
list-style: none;
margin-right: 0;
background:rgba(216, 187, 187,0);
border-radius:0px;
// border:0px solid rgba(221, 221, 221, 0);
& > span {
position: relative;
display: block;
// margin-right: 10px;
width: 100%;
height: 100%;
writing-mode: vertical-rl;
text-orientation: upright;
overflow: hidden;
text-align: center;
& > i {
width: 16px;
font-style: normal;
position: absolute;
top: 0;
left: 30%;
transform: translate(-50%,0);
transition: transform 1s ease-in-out;
letter-spacing: 10px;
font-size: 1.3vh !important;
}
}
}
</style>