| <template> | 
|     <u-transition | 
|         :show="show" | 
|         custom-class="u-overlay" | 
|         :duration="duration" | 
|         :custom-style="overlayStyle" | 
|         @click="clickHandler" | 
|     > | 
|         <slot /> | 
|     </u-transition> | 
| </template> | 
|   | 
| <script> | 
|     import props from './props.js'; | 
|   | 
|     /** | 
|      * overlay 遮罩 | 
|      * @description 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景 | 
|      * @tutorial https://www.uviewui.com/components/overlay.html | 
|      * @property {Boolean}            show        是否显示遮罩(默认 false ) | 
|      * @property {String | Number}    zIndex        zIndex 层级(默认 10070 ) | 
|      * @property {String | Number}    duration    动画时长,单位毫秒(默认 300 ) | 
|      * @property {String | Number}    opacity        不透明度值,当做rgba的第四个参数 (默认 0.5 ) | 
|      * @property {Object}            customStyle    定义需要用到的外部样式 | 
|      * @event {Function} click 点击遮罩发送事件 | 
|      * @example <u-overlay :show="show" @click="show = false"></u-overlay> | 
|      */ | 
|     export default { | 
|         name: "u-overlay", | 
|         mixins: [uni.$u.mpMixin, uni.$u.mixin,props], | 
|         computed: { | 
|             overlayStyle() { | 
|                 const style = { | 
|                     position: 'fixed', | 
|                     top: 0, | 
|                     left: 0, | 
|                     right: 0, | 
|                     zIndex: this.zIndex, | 
|                     bottom: 0, | 
|                     'background-color': `rgba(0, 0, 0, ${this.opacity})` | 
|                 } | 
|                 return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle)) | 
|             } | 
|         }, | 
|         methods: { | 
|             clickHandler() { | 
|                 this.$emit('click') | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
|     @import "../../libs/css/components.scss"; | 
|      $u-overlay-top:0 !default; | 
|      $u-overlay-left:0 !default; | 
|      $u-overlay-width:100% !default; | 
|      $u-overlay-height:100% !default; | 
|      $u-overlay-background-color:rgba(0, 0, 0, .7) !default; | 
|     .u-overlay { | 
|         position: fixed; | 
|         top:$u-overlay-top; | 
|         left:$u-overlay-left; | 
|         width: $u-overlay-width; | 
|         height:$u-overlay-height; | 
|         background-color:$u-overlay-background-color; | 
|     } | 
| </style> |