mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	uni-app引入使用uView
This commit is contained in:
		| @@ -0,0 +1,92 @@ | ||||
| <template> | ||||
| 	<view | ||||
| 		v-if="inited" | ||||
| 		class="u-transition" | ||||
| 		ref="u-transition" | ||||
| 		@tap="clickHandler" | ||||
| 		:class="classes" | ||||
| 		:style="[mergeStyle]" | ||||
| 		@touchmove="noop" | ||||
| 	> | ||||
| 		<slot /> | ||||
| 	</view> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import props from './props.js'; | ||||
| // 组件的methods方法,由于内容较长,写在外部文件中通过mixin引入 | ||||
| import transition from "./transition.js"; | ||||
| /** | ||||
|  * transition  动画组件 | ||||
|  * @description | ||||
|  * @tutorial | ||||
|  * @property {String}			show			是否展示组件 (默认 false ) | ||||
|  * @property {String}			mode			使用的动画模式 (默认 'fade' ) | ||||
|  * @property {String | Number}	duration		动画的执行时间,单位ms (默认 '300' ) | ||||
|  * @property {String}			timingFunction	使用的动画过渡函数 (默认 'ease-out' ) | ||||
|  * @property {Object}			customStyle		自定义样式 | ||||
|  * @event {Function} before-enter	进入前触发 | ||||
|  * @event {Function} enter			进入中触发 | ||||
|  * @event {Function} after-enter	进入后触发 | ||||
|  * @event {Function} before-leave	离开前触发 | ||||
|  * @event {Function} leave			离开中触发 | ||||
|  * @event {Function} after-leave	离开后触发 | ||||
|  * @example | ||||
|  */ | ||||
| export default { | ||||
| 	name: 'u-transition', | ||||
| 	data() { | ||||
| 		return { | ||||
| 			inited: false, // 是否显示/隐藏组件 | ||||
| 			viewStyle: {}, // 组件内部的样式 | ||||
| 			status: '', // 记录组件动画的状态 | ||||
| 			transitionEnded: false, // 组件是否结束的标记 | ||||
| 			display: false, // 组件是否展示 | ||||
| 			classes: '', // 应用的类名 | ||||
| 		} | ||||
| 	}, | ||||
| 	computed: { | ||||
| 	    mergeStyle() { | ||||
| 	        const { viewStyle, customStyle } = this | ||||
| 	        return { | ||||
| 	            // #ifndef APP-NVUE | ||||
| 	            transitionDuration: `${this.duration}ms`, | ||||
| 	            // display: `${this.display ? '' : 'none'}`, | ||||
| 				transitionTimingFunction: this.timingFunction, | ||||
| 	            // #endif | ||||
| 				// 避免自定义样式影响到动画属性,所以写在viewStyle前面 | ||||
| 	            ...uni.$u.addStyle(customStyle), | ||||
| 	            ...viewStyle | ||||
| 	        } | ||||
| 	    } | ||||
| 	}, | ||||
| 	// 将mixin挂在到组件中,uni.$u.mixin实际上为一个vue格式对象 | ||||
| 	mixins: [uni.$u.mpMixin, uni.$u.mixin, transition, props], | ||||
| 	watch: { | ||||
| 		show: { | ||||
| 			handler(newVal) { | ||||
| 				// vue和nvue分别执行不同的方法 | ||||
| 				// #ifdef APP-NVUE | ||||
| 				newVal ? this.nvueEnter() : this.nvueLeave() | ||||
| 				// #endif | ||||
| 				// #ifndef APP-NVUE | ||||
| 				newVal ? this.vueEnter() : this.vueLeave() | ||||
| 				// #endif | ||||
| 			}, | ||||
| 			// 表示同时监听初始化时的props的show的意思 | ||||
| 			immediate: true | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| @import '../../libs/css/components.scss'; | ||||
|  | ||||
| /* #ifndef APP-NVUE */ | ||||
| // vue版本动画相关的样式抽离在外部文件 | ||||
| @import './vue.ani-style.scss'; | ||||
| /* #endif */ | ||||
|  | ||||
| .u-transition {} | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user
	 sfmind
					sfmind