| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | <template>	<view class="uni-load-more">		<view class="uni-load-more__img" v-show="status === 'loading' && showIcon">			<view class="load1">				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>			</view>			<view class="load2">				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>			</view>			<view class="load3">				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>				<view :style="{background:color}"></view>			</view>		</view>		<text class="uni-load-more__text" :style="{color:color}">{{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}</text>	</view></template><script>	export default {		name: "uni-load-more",		props: {			status: {				//上拉的状态:more-loading前;loading-loading中;noMore-没有更多了				type: String,				default: 'more'			},			showIcon: {				type: Boolean,				default: true			},			color: {				type: String,				default: "#777777"			},			contentText: {				type: Object,				default () {					return {						contentdown: "上拉显示更多",						contentrefresh: "正在加载...",						contentnomore: "没有更多数据了"					};				}			}		},		data() {			return {}		}	}</script><style>	@charset "UTF-8";	.uni-load-more {		display: flex;		flex-direction: row;		height: 80upx;		align-items: center;		justify-content: center	}	.uni-load-more__text {		font-size: 28upx;		color: #999	}	.uni-load-more__img {		height: 24px;		width: 24px;		margin-right: 10px	}	.uni-load-more__img>view {		position: absolute	}	.uni-load-more__img>view view {		width: 6px;		height: 2px;		border-top-left-radius: 1px;		border-bottom-left-radius: 1px;		background: #999;		position: absolute;		opacity: .2;		transform-origin: 50%;		animation: load 1.56s ease infinite	}	.uni-load-more__img>view view:nth-child(1) {		transform: rotate(90deg);		top: 2px;		left: 9px	}	.uni-load-more__img>view view:nth-child(2) {		transform: rotate(180deg);		top: 11px;		right: 0	}	.uni-load-more__img>view view:nth-child(3) {		transform: rotate(270deg);		bottom: 2px;		left: 9px	}	.uni-load-more__img>view view:nth-child(4) {		top: 11px;		left: 0	}	.load1,	.load2,	.load3 {		height: 24px;		width: 24px	}	.load2 {		transform: rotate(30deg)	}	.load3 {		transform: rotate(60deg)	}	.load1 view:nth-child(1) {		animation-delay: 0s	}	.load2 view:nth-child(1) {		animation-delay: .13s	}	.load3 view:nth-child(1) {		animation-delay: .26s	}	.load1 view:nth-child(2) {		animation-delay: .39s	}	.load2 view:nth-child(2) {		animation-delay: .52s	}	.load3 view:nth-child(2) {		animation-delay: .65s	}	.load1 view:nth-child(3) {		animation-delay: .78s	}	.load2 view:nth-child(3) {		animation-delay: .91s	}	.load3 view:nth-child(3) {		animation-delay: 1.04s	}	.load1 view:nth-child(4) {		animation-delay: 1.17s	}	.load2 view:nth-child(4) {		animation-delay: 1.3s	}	.load3 view:nth-child(4) {		animation-delay: 1.43s	}	@-webkit-keyframes load {		0% {			opacity: 1		}		100% {			opacity: .2		}	}</style>
 |