<template>
<div class="contain" ref="userinfo">
<div
v-for="(item, index) in ballList"
:key="index"
class="ball"
:style="{
top: all_y[index] + 'px',
left: all_x[index] + 'px',
transition: 'all 1s',
}"
>
{{ item }}
</div>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
ballList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
jsonArr: [],
all_x: [],
all_y: [],
};
},
mounted() {
this.getQiu(this.ballList.length);
for (let i = 0; i < this.jsonArr.length; i++) {
this.all_x.push(this.jsonArr[i].xStart);
this.all_y.push(this.jsonArr[i].yStart);
}
},
methods: {
getQiu(number) {
let iconWidth = 50;
let iconHeight = 50;
let targetWidth = this.$refs.userinfo.offsetWidth;
let targetHeight = this.$refs.userinfo.offsetHeight;
var xNum = parseInt(targetWidth / iconWidth, 10);
var yNum = parseInt(targetHeight / iconHeight, 10);
var allNum = xNum * yNum;
console.log(allNum);
if (number >= allNum) {
return false;
}
let tmpArray = [];
for (let i = 0; i < allNum; i++) {
tmpArray.push(i);
}
console.log(tmpArray);
while (number) {
var pointer = Math.floor(Math.random() * allNum);
delete tmpArray[pointer];
this.jsonArr.push({
yStart: parseInt(pointer / xNum, 10) * iconWidth,
xStart: (pointer % xNum) * iconHeight,
});
number--;
}
},
},
};
</script>
<style>
.contain {
border: 1px solid red;
position: relative;
width: 500px;
height: 200px;
}
.ball {
width: 50px;
height: 50px;
background: grey;
border-radius: 100%;
line-height: 50px;
position: absolute;
animation: identifier 1s alternate infinite;
}
</style>