| <template> | 
|     <view class="u-tips" :class="['u-' + type, isShow ? 'u-tip-show' : '']" :style="{ | 
|         top: navbarHeight + 'px', | 
|         zIndex: uZIndex | 
|     }">{{ title }}</view> | 
| </template> | 
|   | 
| <script> | 
|     /** | 
|      * topTips 顶部提示 | 
|      * @description 该组件一般用于页面顶部向下滑出一个提示,尔后自动收起的场景。 | 
|      * @tutorial https://www.uviewui.com/components/topTips.html | 
|      * @property {String Number} navbar-height 导航栏高度(包含状态栏高度在内),单位PX | 
|      * @property {String Number} z-index z-index值(默认975) | 
|      * @example <u-top-tips ref="uTips"></u-top-tips> | 
|      */ | 
|     export default { | 
|         name: "u-top-tips", | 
|         props: { | 
|             // 导航栏高度,用于提示的初始化 | 
|             navbarHeight: { | 
|                 type: [Number, String], | 
|                 // #ifndef H5 | 
|                 default: 0, | 
|                 // #endif | 
|                 // #ifdef H5 | 
|                 default: 44, | 
|                 // #endif | 
|             }, | 
|             // z-index值 | 
|             zIndex: { | 
|                 type: [Number, String], | 
|                 default: '' | 
|             } | 
|         }, | 
|         data() { | 
|             return { | 
|                 timer: null, // 定时器 | 
|                 isShow: false, // 是否显示消息组件 | 
|                 title: '', // 组件中显示的消息内容 | 
|                 type: 'primary', // 消息的类型(颜色不同),primary,success,error,warning,info | 
|                 duration: 2000, // 组件显示的时间,单位为毫秒 | 
|             }; | 
|         }, | 
|         computed: { | 
|             uZIndex() { | 
|                 return this.zIndex ? this.zIndex : this.$u.zIndex.topTips; | 
|             } | 
|         }, | 
|         methods: { | 
|             show(config = {}) { | 
|                 // 先清除定时器(可能是上一次定义的,需要清除了再开始新的) | 
|                 clearTimeout(this.timer); | 
|                 // 时间,内容,类型主题(type)等参数 | 
|                 if (config.duration) this.duration = config.duration; | 
|                 if (config.type) this.type = config.type; | 
|                 this.title = config.title; | 
|                 this.isShow = true; | 
|                 // 倒计时 | 
|                 this.timer = setTimeout(() => { | 
|                     this.isShow = false; | 
|                     clearTimeout(this.timer); | 
|                     this.timer = null; | 
|                 }, this.duration); | 
|             } | 
|         } | 
|     }; | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
|     @import "../../libs/css/style.components.scss"; | 
|      | 
|     view { | 
|         box-sizing: border-box; | 
|     } | 
|   | 
|     // 顶部弹出类型样式 | 
|     .u-tips { | 
|         width: 100%; | 
|         position: fixed; | 
|         z-index: 1; | 
|         padding: 20rpx 30rpx; | 
|         color: #FFFFFF; | 
|         font-size: 28rpx; | 
|         left: 0; | 
|         right: 0; | 
|         @include vue-flex; | 
|         align-items: center; | 
|         justify-content: center; | 
|         opacity: 0; | 
|         // 此处为最核心点,translateY(-100%)意味着将其从Y轴隐藏(隐藏到顶部(h5)或者说导航栏(app)下面) | 
|         transform: translateY(-100%); | 
|         transition: all 0.35s linear; | 
|     } | 
|   | 
|     .u-tip-show { | 
|         transform: translateY(0); | 
|         opacity: 1; | 
|         z-index: 99; | 
|     } | 
|   | 
|     .u-primary { | 
|         background: $u-type-primary; | 
|     } | 
|   | 
|     .u-success { | 
|         background: $u-type-success; | 
|     } | 
|   | 
|     .u-warning { | 
|         background: $u-type-warning; | 
|     } | 
|   | 
|     .u-error { | 
|         background: $u-type-error; | 
|     } | 
|   | 
|     .u-info { | 
|         background: $u-type-info; | 
|     } | 
| </style> |