63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
<template>
 | 
						||
  <view class="wrap" :style="{height: `${height}px`}">
 | 
						||
    <view class="divider" :style="[elStyle]"></view>
 | 
						||
  </view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script setup>
 | 
						||
  /**
 | 
						||
   * 分割线
 | 
						||
   */
 | 
						||
 | 
						||
  import { computed } from 'vue';
 | 
						||
 | 
						||
  // 接收参数
 | 
						||
  const props = defineProps({
 | 
						||
    // 线条颜色
 | 
						||
    lineColor: {
 | 
						||
      type: String,
 | 
						||
      default: '#000',
 | 
						||
    },
 | 
						||
    // 线条样式:'dotted', 'solid', 'double', 'dashed'
 | 
						||
    borderType: {
 | 
						||
      type: String,
 | 
						||
      default: 'dashed',
 | 
						||
    },
 | 
						||
    // 线条宽度
 | 
						||
    lineWidth: {
 | 
						||
      type: Number,
 | 
						||
      default: 1,
 | 
						||
    },
 | 
						||
    // 高度
 | 
						||
    height: {
 | 
						||
      type: [Number, String],
 | 
						||
      default: 'auto'
 | 
						||
    },
 | 
						||
    // 左右边距:none - 无边距,horizontal - 左右留边
 | 
						||
    paddingType: {
 | 
						||
      type: String,
 | 
						||
      default: 'none'
 | 
						||
    }
 | 
						||
  });
 | 
						||
 | 
						||
  const elStyle = computed(() => {
 | 
						||
    return {
 | 
						||
      'border-top-width': `${props.lineWidth}px`,
 | 
						||
      'border-top-color': props.lineColor,
 | 
						||
      'border-top-style': props.borderType,
 | 
						||
      margin: props.paddingType === 'none' ? '0' : '0px 16px'
 | 
						||
    };
 | 
						||
  });
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss" scoped>
 | 
						||
.wrap {
 | 
						||
  display: flex;
 | 
						||
  align-items: center;
 | 
						||
 | 
						||
  .divider {
 | 
						||
    width: 100%;
 | 
						||
  }
 | 
						||
}
 | 
						||
</style>
 |