MouseSelection.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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-color: rgba($themeColor, 0.1);
  45. border: 1px solid $themeColor;
  46. z-index: 200;
  47. &.quadrant-1 {
  48. transform-origin: 0 0;
  49. transform: rotate(180deg);
  50. }
  51. &.quadrant-2 {
  52. transform-origin: 50% 0;
  53. transform: rotate(180deg);
  54. }
  55. &.quadrant-3 {
  56. transform-origin: 0 50%;
  57. transform: rotate(180deg);
  58. }
  59. &.quadrant-4 {
  60. transform-origin: 0 0;
  61. transform: rotate(0deg);
  62. }
  63. }
  64. </style>