<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> 
 |