| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | <template>	<view>		<uni-card is-full :is-shadow="false">			<text class="uni-h6">过渡动画,通常用于元素的过渡效果,例如淡隐淡出效果,遮罩层的效果、放大缩小的效果等</text>		</uni-card>		<uni-section title="示例" type="line">			<view class="example">				<uni-transition ref="ani" custom-class="transition" :mode-class="modeClass" :styles="styles" :show="show"><text class="text">示例元素</text></uni-transition>			</view>		</uni-section>		<uni-section title="操作" subTitle="点击按钮 ,切换动画效果" type="line">			<view class="example-body">				<button class="transition-button" type="primary" @click="handle('fade')">淡隐淡出</button>				<button class="transition-button" type="primary" @click="handle(['fade', 'slide-top'])">由上至下</button>				<button class="transition-button" type="primary" @click="handle(['fade', 'slide-right'])">由右至左过</button>				<button class="transition-button" type="primary" @click="handle(['fade', 'zoom-in'])">由小到大过</button>				<button class="transition-button" type="primary" @click="custom">自定义动画</button>			</view>		</uni-section>	</view></template><script>export default {	components: {},	data() {		return {			show: true,			modeClass: 'fade',			styles: {}		}	},	onLoad() {		// #ifdef APP-NVUE		this.styles = {			justifyContent: 'center',			alignItems: 'center',			width: '100px',			height: '100px',			borderRadius: '5px',			textAlign: 'center',			backgroundColor: '#4cd964',			boxShadow: '0 0 5px 1px rgba(0,0,0,0.2)'		}		// #endif	},	methods: {		handle(type) {			this.show = !this.show			this.modeClass = type		},		custom() {			// TODO 下面修改宽高在百度下还有些问题待修复			// this.$refs.ani.step({			// 	width: '200px'			// })			// this.$refs.ani.step({			// 	height: '150px'			// },{			// 	delay:100,			// 	duration:200			// })			this.$refs.ani.step(				{					width: '100px',					height: '100px',					rotate: '180'				},				{					delay: 200,					duration: 300				}			)			this.$refs.ani.step(				{					width: '100px',					height: '100px',					rotate: '0'				},				{					transformOrigin: '50% 50%'				}			)			this.$refs.ani.step(				{					translateX: '-100px'				},				{					timingFunction: 'ease-in',					duration: 100				}			)			this.$refs.ani.step(				{					translateX: '100px'				},				{					timingFunction: 'ease',					duration: 300				}			)			this.$refs.ani.step(				{					translateX: '50px',					scale: 1.5				},				{					timingFunction: 'linear',					duration: 100				}			)			this.$refs.ani.step(				{					translateX: '0px',					scale: 1				},				{					timingFunction: 'linear',					duration: 150				}			)			this.$refs.ani.run()		}	}}</script><style lang="scss" scoped>.example {	/* #ifndef APP-NVUE */	display: flex;	/* #endif */	justify-content: center;	align-items: center;	height: 150px;	background-color: #fff;}.example-body {	padding: 10px 20px;	padding-bottom: 0px;}.transition-button {	/* #ifndef APP-NVUE */	width: 100%;	/* #endif */	flex: 1;	margin-bottom: 10px;}/* #ifndef APP-NVUE */.example ::v-deep .transition {	display: flex;	justify-content: center;	align-items: center;	width: 100px;	height: 100px;	border-radius: 5px;	text-align: center;	background-color: #4cd964;	box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.2);}/* #endif */.text {	font-size: 14px;	color: #fff;}</style>
 |