MouseSelection.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <div :class="`mouse-selection quadrant-${quadrant}`"
  3. :style="{
  4. top: top + 'px',
  5. left: left + 'px',
  6. width: width + 'px',
  7. height: height + 'px',
  8. }"
  9. ></div>
  10. </template>
  11. <script lang="ts">
  12. export default {
  13. name: 'mouse-selection',
  14. props: {
  15. top: {
  16. type: Number,
  17. required: true,
  18. },
  19. left: {
  20. type: Number,
  21. required: true,
  22. },
  23. width: {
  24. type: Number,
  25. required: true,
  26. },
  27. height: {
  28. type: Number,
  29. required: true,
  30. },
  31. quadrant: {
  32. type: Number,
  33. required: true,
  34. validator(value: number) {
  35. return [1, 2, 3, 4].includes(value)
  36. },
  37. },
  38. }
  39. }
  40. </script>
  41. <style lang="scss" scoped>
  42. .mouse-selection {
  43. position: absolute;
  44. background: rgba(150, 150, 150, 0.25);
  45. z-index: 200;
  46. &.quadrant-1 {
  47. transform-origin: 0 0;
  48. transform: rotate(180deg);
  49. }
  50. &.quadrant-2 {
  51. transform-origin: 50% 0;
  52. transform: rotate(180deg);
  53. }
  54. &.quadrant-3 {
  55. transform-origin: 0 50%;
  56. transform: rotate(180deg);
  57. }
  58. &.quadrant-4 {
  59. transform-origin: 0 0;
  60. transform: rotate(0deg);
  61. }
  62. }
  63. </style>