fs-mask.vue 762 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <template>
  2. <view
  3. class="fs-mask"
  4. :class="{'fs-mask-blur': blurable}"
  5. :style="{'zIndex': zIndex}"
  6. v-if="modelValue"
  7. @click="handleMask">
  8. </view>
  9. </template>
  10. <script setup>
  11. const props = defineProps({
  12. modelValue: Boolean,
  13. blurable: Boolean,
  14. zIndex: {
  15. type: Number,
  16. default: 899
  17. },
  18. maskClickable: {
  19. type: Boolean,
  20. default: true
  21. }
  22. })
  23. const emits = defineEmits(['update:modelValue','close'])
  24. const handleMask = () => {
  25. if (props.maskClickable) {
  26. emits('update:modelValue', false)
  27. emits('close')
  28. }
  29. }
  30. </script>
  31. <style lang="scss">
  32. .fs-mask{
  33. position: fixed;
  34. top: var(--window-top);
  35. right: 0;
  36. bottom: var(--window-bottom);
  37. left: 0;
  38. background-color: rgba(0, 0, 0, 0.5);
  39. &-blur{
  40. backdrop-filter: blur(12rpx);
  41. }
  42. }
  43. </style>