完整代码
<template>
<div id="box">
<div
class="min_ball"
v-for="(item, index) in list"
:key="item"
:style="{ rotate: index * (360 / list.length) + 'deg' }"
>
<div class="min_ball_cld"></div>
</div>
<div id="ball">
</div>
</div>
</template>
<script setup lang="ts">
import {
ref,
reactive,
toRefs,
toRef,
computed,
watch,
watchEffect,
} from "vue";
let list = ref([1, 2, 4, 5, 6]);
</script>
<style lang="scss" scoped>
* {
padding: 0px;
margin: 0px;
}
#box {
height: 98vh;
width: 100%;
background: url("https://hbimg.b0.upaiyun.com/b2ecec033c1aa8ffaffa419da50986250792d68417a5d-5Izx2T_fw658");
background-repeat: no-repeat;
background-size: 100% 100%;
overflow-y: hidden;
overflow-x: hidden;
}
/* 大球样式*/
#ball {
width: 20vw;
height: 20vw;
background: rgba(21, 0, 94, 0.5);
border-radius: 50%;
border: 1px solid #70ff1d;
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/*小球样式*/
.min_ball {
position: absolute;
width: 15vw;
height: 15vw;
/*background: rgba(72, 26, 238, 0.5);
border: 1px solid red;*/
top: 50%;
left: 50%;
transform-origin: left top;
animation: min_balls 12s infinite linear;
.min_ball_cld{
width: 50%;
height: 50%;
background: rgba(255, 255, 255, 0.5);
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-20%, -20%);
}
}
@keyframes min_balls {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
解析:主要是通过在内层定义一个正方体旋转,然后在里面设置一个圆,来实现小球的定位
样式可能有点小丑,但是呢,挺实用的,里面参数什么的都可以更改,下面是一个进阶版的响应式,如有需要请联系小弟,
通过vue3前端框架来搭建的页面!
希望这串代码能给大家带来用处,如果有不懂的,或者有想法的,都可以联系作者,一一解答。
大家一起加油努力吧!!