| <template> | |
| 	<view | |
| 	    class="u-divider" | |
| 	    :style="[$u.addStyle(customStyle)]" | |
| 		@tap="click" | |
| 	> | |
| 		<u-line | |
| 		    :color="lineColor" | |
| 		    :customStyle="leftLineStyle" | |
| 		    :hairline="hairline" | |
| 			:dashed="dashed" | |
| 		></u-line> | |
| 		<text | |
| 		    v-if="dot" | |
| 		    class="u-divider__dot" | |
| 		>●</text> | |
| 		<text | |
| 		    v-else-if="text" | |
| 		    class="u-divider__text" | |
| 		    :style="[textStyle]" | |
| 		>{{text}}</text> | |
| 		<u-line | |
| 		    :color="lineColor" | |
| 		    :customStyle="rightLineStyle" | |
| 		    :hairline="hairline" | |
| 			:dashed="dashed" | |
| 		></u-line> | |
| 	</view> | |
| </template> | |
|  | |
| <script> | |
| 	import props from './props.js'; | |
| 	/** | |
| 	 * divider 分割线 | |
| 	 * @description 区隔内容的分割线,一般用于页面底部"没有更多"的提示。 | |
| 	 * @tutorial https://www.uviewui.com/components/divider.html | |
| 	 * @property {Boolean}			dashed			是否虚线 (默认 false ) | |
| 	 * @property {Boolean}			hairline		是否细线 (默认  true ) | |
| 	 * @property {Boolean}			dot				是否以点替代文字,优先于text字段起作用 (默认 false ) | |
| 	 * @property {String}			textPosition	内容文本的位置,left-左边,center-中间,right-右边 (默认 'center' ) | |
| 	 * @property {String | Number}	text			文本内容 | |
| 	 * @property {String | Number}	textSize		文本大小 (默认 14) | |
| 	 * @property {String}			textColor		文本颜色 (默认 '#909399' ) | |
| 	 * @property {String}			lineColor		线条颜色 (默认 '#dcdfe6' ) | |
| 	 * @property {Object}			customStyle		定义需要用到的外部样式 | |
| 	 * | |
| 	 * @event {Function}	click	divider组件被点击时触发 | |
| 	 * @example <u-divider :color="color">锦瑟无端五十弦</u-divider> | |
| 	 */ | |
| 	export default { | |
| 		name:'u-divider', | |
| 		mixins: [uni.$u.mpMixin, uni.$u.mixin,props], | |
| 		computed: { | |
| 			textStyle() { | |
| 				const style = {} | |
| 				style.fontSize = uni.$u.addUnit(this.textSize) | |
| 				style.color = this.textColor | |
| 				return style | |
| 			}, | |
| 			// 左边线条的的样式 | |
| 			leftLineStyle() { | |
| 				const style = {} | |
| 				// 如果是在左边,设置左边的宽度为固定值 | |
| 				if (this.textPosition === 'left') { | |
| 					style.width = '80rpx' | |
| 				} else { | |
| 					style.flex = 1 | |
| 				} | |
| 				return style | |
| 			}, | |
| 			// 右边线条的的样式 | |
| 			rightLineStyle() { | |
| 				const style = {} | |
| 				// 如果是在右边,设置右边的宽度为固定值 | |
| 				if (this.textPosition === 'right') { | |
| 					style.width = '80rpx' | |
| 				} else { | |
| 					style.flex = 1 | |
| 				} | |
| 				return style | |
| 			} | |
| 		}, | |
| 		methods: { | |
| 			// divider组件被点击时触发 | |
| 			click() { | |
| 				this.$emit('click'); | |
| 			} | |
| 		} | |
| 	} | |
| </script> | |
| 
 | |
| <style lang="scss" scoped> | |
| 	@import '../../libs/css/components.scss'; | |
| 	$u-divider-margin:15px 0 !default; | |
| 	$u-divider-text-margin:0 15px !default; | |
| 	$u-divider-dot-font-size:12px !default; | |
| 	$u-divider-dot-margin:0 12px !default; | |
| 	$u-divider-dot-color: #c0c4cc !default; | |
| 
 | |
| 	.u-divider { | |
| 		@include flex; | |
| 		flex-direction: row; | |
| 		align-items: center; | |
| 		margin: $u-divider-margin; | |
| 
 | |
| 		&__text { | |
| 			margin: $u-divider-text-margin; | |
| 		} | |
| 
 | |
| 		&__dot { | |
| 			font-size: $u-divider-dot-font-size; | |
| 			margin: $u-divider-dot-margin; | |
| 			color: $u-divider-dot-color; | |
| 		} | |
| 	} | |
| </style>
 |