su-subline.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <view class="wrap" :style="{height: `${height}px`}">
  3. <view class="divider" :style="[elStyle]"></view>
  4. </view>
  5. </template>
  6. <script setup>
  7. /**
  8. * 分割线
  9. */
  10. import { computed } from 'vue';
  11. // 接收参数
  12. const props = defineProps({
  13. // 线条颜色
  14. lineColor: {
  15. type: String,
  16. default: '#000',
  17. },
  18. // 线条样式:'dotted', 'solid', 'double', 'dashed'
  19. borderType: {
  20. type: String,
  21. default: 'dashed',
  22. },
  23. // 线条宽度
  24. lineWidth: {
  25. type: Number,
  26. default: 1,
  27. },
  28. // 高度
  29. height: {
  30. type: [Number, String],
  31. default: 'auto'
  32. },
  33. // 左右边距:none - 无边距,horizontal - 左右留边
  34. paddingType: {
  35. type: String,
  36. default: 'none'
  37. }
  38. });
  39. const elStyle = computed(() => {
  40. return {
  41. 'border-top-width': `${props.lineWidth}px`,
  42. 'border-top-color': props.lineColor,
  43. 'border-top-style': props.borderType,
  44. margin: props.paddingType === 'none' ? '0' : '0px 16px'
  45. };
  46. });
  47. </script>
  48. <style lang="scss" scoped>
  49. .wrap {
  50. display: flex;
  51. align-items: center;
  52. .divider {
  53. width: 100%;
  54. }
  55. }
  56. </style>