DefaultTip.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <div class="tip-content">
  3. <span>默认摄像头</span>
  4. <div v-if="props.position === TipPositionEnum.TOP" class="tip-narrow bottom"></div>
  5. <div v-else-if="props.position === TipPositionEnum.BOTTOM" class="tip-narrow top"></div>
  6. <div v-else-if="props.position === TipPositionEnum.RIGHT" class="tip-narrow left"></div>
  7. <div v-else class="tip-narrow right"></div>
  8. </div>
  9. </template>
  10. <script setup lang="ts">
  11. import { TipPositionEnum } from '../type';
  12. const props = withDefaults(defineProps<{ position: TipPositionEnum }>(), {
  13. position: TipPositionEnum.TOP,
  14. });
  15. </script>
  16. <style scoped lang="scss">
  17. .tip-content {
  18. position: relative;
  19. width: 86px;
  20. height: 35px;
  21. background-color: #3c3c3d;
  22. border-radius: 8px;
  23. display: flex;
  24. justify-content: center;
  25. align-items: center;
  26. font-size: 14px;
  27. font-weight: 400;
  28. color: #ffffff;
  29. margin: 5px;
  30. }
  31. .tip-narrow {
  32. position: absolute;
  33. border: 5px solid transparent;
  34. &.bottom {
  35. top: 100%;
  36. left: 50%;
  37. border-top-color: #3c3c3d;
  38. transform: translateX(-50%);
  39. }
  40. &.top {
  41. top: 0%;
  42. left: 50%;
  43. border-bottom-color: #3c3c3d;
  44. transform: translate(-50%, -100%);
  45. }
  46. &.left {
  47. top: 50%;
  48. left: 0%;
  49. border-right-color: #3c3c3d;
  50. transform: translate(-100%, -50%);
  51. }
  52. &.right {
  53. top: 50%;
  54. right: 0%;
  55. border-left-color: #3c3c3d;
  56. transform: translate(100%, -50%);
  57. }
  58. }
  59. </style>