绿满眶商城微信小程序-uniapp
peng
2025-06-27 3f7acbae32700d7c3c2f883968ea33d436df5219
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<template>
  <view class="animations">
    <view class="box">
      <view class="gear1">
        <view class="inner inner1"> </view>
        <view class="inner inner2"> </view>
        <view class="inner inner3"> </view>
      </view>
      <view class="gear2">
        <view class="inner inner1"> </view>
        <view class="inner inner2"> </view>
        <view class="inner inner3"> </view>
      </view>
      <view class="gear3">
        <view class="inner inner1"> </view>
        <view class="inner inner2"> </view>
        <view class="inner inner3"> </view>
      </view>
    </view>
  </view>
</template>
 
<script>
export default {
  name: "loading-gear",
  data() {
    return {};
  },
};
</script>
 
<style lang="scss" scoped>
$size: 80rpx;
$bgc: red;
 
.box {
  width: 200rpx;
  height: 200rpx;
  position: relative;
}
 
@mixin gear($size: $size, $bgc: $bgc) {
  width: $size;
  height: $size;
  .inner {
    position: absolute;
    width: $size;
    height: $size;
    top: 0;
    left: 0;
    background: $bgc;
    border-radius: 6rpx;
    mask: radial-gradient(transparent 40%, #fff 60%);
  }
 
  .inner2 {
    transform: rotate(120deg);
  }
 
  .inner3 {
    transform: rotate(240deg);
  }
 
  // &:after {
  //     position: absolute;
  //     content: '';
  //     background: #fff;
  //     width: $size / 1.8;
  //     height: $size / 1.8;
  //     border-radius: 100%;
  //     top: 50%;
  //     left: 50%;
  //     transform: translate(-50%, -50%);
  // }
}
 
.gear1 {
  @include gear(60rpx, #0396ff);
  position: absolute;
  top: 35rpx;
  left: 35rpx;
  animation: rotate 5s infinite linear;
}
 
.gear2 {
  @include gear(50rpx, #dd524d);
  position: absolute;
  top: 50rpx;
  left: 110rpx;
  animation: rotateR 5s infinite linear;
}
.gear3 {
  @include gear(50rpx, #f0ad4e);
  position: absolute;
  top: 110rpx;
  left: 50rpx;
  animation: rotateR 5s infinite linear;
}
 
@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
 
  to {
    transform: rotate(360deg);
  }
}
@keyframes rotateR {
  from {
    transform: rotate(0deg);
  }
 
  to {
    transform: rotate(-360deg);
  }
}
</style>