| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | <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>
 |