rotate-plane.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <view>
  3. <view
  4. :style="{
  5. backgroundColor: color,
  6. width: size + 20 + 'px',
  7. height: size + 20 + 'px'
  8. }"
  9. class="spinner-inside"
  10. ></view>
  11. </view>
  12. </template>
  13. <script>
  14. export default {
  15. name: 'rotatePlane',
  16. props: {
  17. color: String,
  18. size: Number
  19. }
  20. };
  21. </script>
  22. <style scoped>
  23. .spinner-inside {
  24. margin: 25px auto;
  25. -webkit-animation: rotateplane 1.2s infinite ease-in-out;
  26. animation: rotateplane 1.2s infinite ease-in-out;
  27. }
  28. @-webkit-keyframes rotateplane {
  29. 0% {
  30. -webkit-transform: perspective(120px);
  31. }
  32. 50% {
  33. -webkit-transform: perspective(120px) rotateY(180deg);
  34. }
  35. 100% {
  36. -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg);
  37. }
  38. }
  39. @keyframes rotateplane {
  40. 0% {
  41. transform: perspective(120px) rotateX(0deg) rotateY(0deg);
  42. -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
  43. }
  44. 50% {
  45. transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
  46. -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
  47. }
  48. 100% {
  49. transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
  50. -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
  51. }
  52. }
  53. </style>