jiuyiUniapp/shop/components/rf-loading/loaders/double-cube.vue

102 lines
1.9 KiB
Vue
Raw Normal View History

2024-12-18 15:46:27 +08:00
<template>
<view>
<view
class="spinner-inside"
:style="{
width: size + 'px',
height: size + 'px'
}"
>
<view
:style="{
backgroundColor: color,
width: size - 10 + 'px',
height: size - 10 + 'px'
}"
class="cube1"
></view>
<view
:style="{
backgroundColor: color,
width: size - 10 + 'px',
height: size - 10 + 'px'
}"
class="cube2"
></view>
</view>
</view>
</template>
<script>
export default {
name: 'doubleCube',
props: {
color: String,
size: Number
}
};
</script>
<style scoped>
.spinner-inside {
margin: 50% auto;
position: relative;
transform: translate(-50%, -50%);
}
.cube1,
.cube2 {
position: absolute;
top: 0;
left: 0;
-webkit-animation: cubemove 1.8s infinite ease-in-out;
animation: cubemove 1.8s infinite ease-in-out;
}
.cube2 {
-webkit-animation-delay: -0.9s;
animation-delay: -0.9s;
}
@-webkit-keyframes cubemove {
25% {
-webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
}
50% {
-webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
}
75% {
-webkit-transform: translateX(0px) translateY(42px) rotate(-270deg)
scale(0.5);
}
100% {
-webkit-transform: rotate(-360deg);
}
}
@keyframes cubemove {
25% {
transform: translateX(42px) rotate(-90deg) scale(0.5);
-webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
}
50% {
transform: translateX(42px) translateY(42px) rotate(-179deg);
-webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
}
50.1% {
transform: translateX(42px) translateY(42px) rotate(-180deg);
-webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
}
75% {
transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
-webkit-transform: translateX(0px) translateY(42px) rotate(-270deg)
scale(0.5);
}
100% {
transform: rotate(-360deg);
-webkit-transform: rotate(-360deg);
}
}
</style>