double-cube.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <view>
  3. <view
  4. class="spinner-inside"
  5. :style="{
  6. width: size + 'px',
  7. height: size + 'px'
  8. }"
  9. >
  10. <view
  11. :style="{
  12. backgroundColor: color,
  13. width: size - 10 + 'px',
  14. height: size - 10 + 'px'
  15. }"
  16. class="cube1"
  17. ></view>
  18. <view
  19. :style="{
  20. backgroundColor: color,
  21. width: size - 10 + 'px',
  22. height: size - 10 + 'px'
  23. }"
  24. class="cube2"
  25. ></view>
  26. </view>
  27. </view>
  28. </template>
  29. <script>
  30. export default {
  31. name: 'doubleCube',
  32. props: {
  33. color: String,
  34. size: Number
  35. }
  36. };
  37. </script>
  38. <style scoped>
  39. .spinner-inside {
  40. margin: 50% auto;
  41. position: relative;
  42. transform: translate(-50%, -50%);
  43. }
  44. .cube1,
  45. .cube2 {
  46. position: absolute;
  47. top: 0;
  48. left: 0;
  49. -webkit-animation: cubemove 1.8s infinite ease-in-out;
  50. animation: cubemove 1.8s infinite ease-in-out;
  51. }
  52. .cube2 {
  53. -webkit-animation-delay: -0.9s;
  54. animation-delay: -0.9s;
  55. }
  56. @-webkit-keyframes cubemove {
  57. 25% {
  58. -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
  59. }
  60. 50% {
  61. -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
  62. }
  63. 75% {
  64. -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg)
  65. scale(0.5);
  66. }
  67. 100% {
  68. -webkit-transform: rotate(-360deg);
  69. }
  70. }
  71. @keyframes cubemove {
  72. 25% {
  73. transform: translateX(42px) rotate(-90deg) scale(0.5);
  74. -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
  75. }
  76. 50% {
  77. transform: translateX(42px) translateY(42px) rotate(-179deg);
  78. -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
  79. }
  80. 50.1% {
  81. transform: translateX(42px) translateY(42px) rotate(-180deg);
  82. -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
  83. }
  84. 75% {
  85. transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
  86. -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg)
  87. scale(0.5);
  88. }
  89. 100% {
  90. transform: rotate(-360deg);
  91. -webkit-transform: rotate(-360deg);
  92. }
  93. }
  94. </style>