mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 10:18:42 +08:00 
			
		
		
		
	uni-app引入使用uView
This commit is contained in:
		| @@ -0,0 +1,110 @@ | ||||
| <template> | ||||
| 	<view class="u-swiper-indicator"> | ||||
| 		<view | ||||
| 			class="u-swiper-indicator__wrapper" | ||||
| 			v-if="indicatorMode === 'line'" | ||||
| 			:class="[`u-swiper-indicator__wrapper--${indicatorMode}`]" | ||||
| 			:style="{ | ||||
| 				width: $u.addUnit(lineWidth * length), | ||||
| 				backgroundColor: indicatorInactiveColor | ||||
| 			}" | ||||
| 		> | ||||
| 			<view | ||||
| 				class="u-swiper-indicator__wrapper--line__bar" | ||||
| 				:style="[lineStyle]" | ||||
| 			></view> | ||||
| 		</view> | ||||
| 		<view | ||||
| 			class="u-swiper-indicator__wrapper" | ||||
| 			v-if="indicatorMode === 'dot'" | ||||
| 		> | ||||
| 			<view | ||||
| 				class="u-swiper-indicator__wrapper__dot" | ||||
| 				v-for="(item, index) in length" | ||||
| 				:key="index" | ||||
| 				:class="[index === current && 'u-swiper-indicator__wrapper__dot--active']" | ||||
| 				:style="[dotStyle(index)]" | ||||
| 			> | ||||
|  | ||||
| 			</view> | ||||
| 		</view> | ||||
| 	</view> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| 	import props from './props.js'; | ||||
| 	/** | ||||
| 	 * SwiperIndicator 轮播图指示器 | ||||
| 	 * @description 该组件一般用于导航轮播,广告展示等场景,可开箱即用, | ||||
| 	 * @tutorial https://www.uviewui.com/components/swiper.html | ||||
| 	 * @property {String | Number}	length					轮播的长度(默认 0 ) | ||||
| 	 * @property {String | Number}	current					当前处于活动状态的轮播的索引(默认 0 ) | ||||
| 	 * @property {String}			indicatorActiveColor	指示器非激活颜色 | ||||
| 	 * @property {String}			indicatorInactiveColor	指示器的激活颜色 | ||||
| 	 * @property {String}			indicatorMode			指示器模式(默认 'line' ) | ||||
| 	 * @example	<u-swiper :list="list4" indicator keyName="url" :autoplay="false"></u-swiper> | ||||
| 	 */ | ||||
| 	export default { | ||||
| 		name: 'u-swiper-indicator', | ||||
| 		mixins: [uni.$u.mpMixin, uni.$u.mixin, props], | ||||
| 		data() { | ||||
| 			return { | ||||
| 				lineWidth: 22 | ||||
| 			} | ||||
| 		}, | ||||
| 		computed: { | ||||
| 			// 指示器为线型的样式 | ||||
| 			lineStyle() { | ||||
| 				let style = {} | ||||
| 				style.width = uni.$u.addUnit(this.lineWidth) | ||||
| 				style.transform = `translateX(${ uni.$u.addUnit(this.current * this.lineWidth) })` | ||||
| 				style.backgroundColor = this.indicatorActiveColor | ||||
| 				return style | ||||
| 			}, | ||||
| 			// 指示器为点型的样式 | ||||
| 			dotStyle() { | ||||
| 				return index => { | ||||
| 					let style = {} | ||||
| 					style.backgroundColor = index === this.current ? this.indicatorActiveColor : this.indicatorInactiveColor | ||||
| 					return style | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 	} | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| 	@import "../../libs/css/components.scss"; | ||||
|  | ||||
| 	.u-swiper-indicator { | ||||
|  | ||||
| 		&__wrapper { | ||||
| 			@include flex; | ||||
|  | ||||
| 			&--line { | ||||
| 				border-radius: 100px; | ||||
| 				height: 4px; | ||||
|  | ||||
| 				&__bar { | ||||
| 					width: 22px; | ||||
| 					height: 4px; | ||||
| 					border-radius: 100px; | ||||
| 					background-color: #FFFFFF; | ||||
| 					transition: transform 0.3s; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			&__dot { | ||||
| 				width: 5px; | ||||
| 				height: 5px; | ||||
| 				border-radius: 100px; | ||||
| 				margin: 0 4px; | ||||
|  | ||||
| 				&--active { | ||||
| 					width: 12px; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 		} | ||||
| 	} | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user
	 sfmind
					sfmind