| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | 
							- <template>
 
- 	<view>
 
- 		<swiper :style="{width:width, height:height}" class="grace-swiper-card" 
 
- 		:indicator-dots="indicatorDots" :interval="interval" 
 
- 		:indicator-color="indicatorColor" :indicator-active-color="indicatorActiveColor" 
 
- 		:duration="500" :circular="true" :autoplay="autoplay" :current="currentIndex" 
 
- 		:previous-margin="spacing" :next-margin="spacing" @change="swiperchange">
 
- 			<swiper-item v-for="(item, index) in swiperItems" :key="index" class="grace-swiper-card-item">
 
- 				<navigator :url="item.url" :open-type="item.opentype" hover-class="none" :style="{padding :padding}">
 
- 					<image :style="{borderRadius : borderRadius}" 
 
- 					:src="item.img" class="grace-swiper-card-image" 
 
- 					:class="[
 
- 						current != index && scale ? 'grace-swiper-card-img-small' : '',
 
- 						current == index && isReady ? 'grace-swiper-card-img-big' : ''
 
- 					]" mode="widthFix" />
 
- 				</navigator>
 
- 			</swiper-item>
 
- 		</swiper>
 
- 	</view>
 
- </template>
 
- <script>
 
- export default{
 
- 	props:{
 
- 		width:{
 
- 			type : String,
 
- 			default : "100%"
 
- 		},
 
- 		height:{
 
- 			type : String,
 
- 			default : "300rpx"
 
- 		},
 
- 		swiperItems : {
 
- 			type : Array,
 
- 			default : function(){return new Array();}
 
- 		},
 
- 		borderRadius : {
 
- 			type : String,
 
- 			default : '5rpx'
 
- 		},
 
- 		indicatorColor : {
 
- 			type : String,
 
- 			default : "rgba(0, 0, 0, 0.2)"
 
- 		},
 
- 		indicatorActiveColor : {
 
- 			type : String,
 
- 			default : "#3688FF"
 
- 		},
 
- 		spacing : {
 
- 			type : String,
 
- 			default : "50rpx"
 
- 		},
 
- 		interval : {
 
- 			type : Number,
 
- 			default : 5000
 
- 		},
 
- 		padding:{
 
- 			type : String,
 
- 			default : '0 10rpx'
 
- 		},
 
- 		scale : {
 
- 			type : Boolean,
 
- 			default : true
 
- 		},
 
- 		autoplay : {
 
- 			type : Boolean,
 
- 			default : true
 
- 		},
 
- 		currentIndex : {
 
- 			type : Number,
 
- 			default : 0
 
- 		},
 
- 		indicatorDots:{
 
- 			type : Boolean,
 
- 			default:true
 
- 		}
 
- 	},
 
- 	data() {
 
- 		return {
 
- 			current : 0,
 
- 			isReady : false
 
- 		}
 
- 	},
 
- 	watch:{
 
- 		currentIndex : function (val) {
 
- 			this.current = val;
 
- 		}
 
- 	},
 
- 	created:function(){
 
- 		this.current = this.currentIndex;
 
- 	},
 
- 	methods:{
 
- 		swiperchange : function (e) {
 
- 			this.current = e.detail.current;
 
- 			this.$emit('swiperchange', this.current);
 
- 			this.isReady = true;
 
- 		}
 
- 	}
 
- }
 
- </script>
 
- <style scoped>
 
- .grace-swiper-card-item{box-sizing: border-box; font-size:0; overflow:hidden;}
 
- .grace-swiper-card-image{width:100%;}
 
- .grace-swiper-card-img-small{transform:scaleY(0.88); opacity:0.8; transform-origin:center center;}
 
- .grace-swiper-card-img-big{transform:scaleY(1); opacity:1; transform-origin:center center; transition:300ms linear;}
 
- </style>
 
 
  |