New file |
| | |
| | | <template> |
| | | <view class="uni-section" nvue> |
| | | <view v-if="type" class="uni-section__head"> |
| | | <view :class="type" class="uni-section__head-tag" /> |
| | | </view> |
| | | <view class="uni-section__content"> |
| | | <text :class="{'distraction':!subTitle}" class="uni-section__content-title">{{ title }}</text> |
| | | <text v-if="subTitle" class="uni-section__content-sub">{{ subTitle }}</text> |
| | | </view> |
| | | <slot /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | /** |
| | | * Section 标题栏 |
| | | * @description 标题栏 |
| | | * @property {String} type = [line|circle] 标题装饰类型 |
| | | * @value line 竖线 |
| | | * @value circle 圆形 |
| | | * @property {String} title 主标题 |
| | | * @property {String} subTitle 副标题 |
| | | */ |
| | | |
| | | export default { |
| | | name: 'UniSection', |
| | | props: { |
| | | type: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | subTitle: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return {} |
| | | }, |
| | | watch: { |
| | | title(newVal) { |
| | | if (uni.report && newVal !== '') { |
| | | uni.report('title', newVal) |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | onClick() { |
| | | this.$emit('click') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .uni-section { |
| | | position: relative; |
| | | /* #ifndef APP-NVUE */ |
| | | display: flex; |
| | | /* #endif */ |
| | | margin-top: 10px; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | padding: 0 10px; |
| | | height: 50px; |
| | | background-color: $uni-bg-color-grey; |
| | | /* #ifdef APP-NVUE */ |
| | | // border-bottom-color: $uni-border-color; |
| | | // border-bottom-style: solid; |
| | | // border-bottom-width: 0.5px; |
| | | /* #endif */ |
| | | font-weight: normal; |
| | | } |
| | | /* #ifndef APP-NVUE */ |
| | | // .uni-section:after { |
| | | // position: absolute; |
| | | // bottom: 0; |
| | | // right: 0; |
| | | // left: 0; |
| | | // height: 1px; |
| | | // content: ''; |
| | | // -webkit-transform: scaleY(.5); |
| | | // transform: scaleY(.5); |
| | | // background-color: $uni-border-color; |
| | | // } |
| | | /* #endif */ |
| | | |
| | | .uni-section__head { |
| | | flex-direction: row; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .line { |
| | | height: 15px; |
| | | background-color: $uni-text-color-disable; |
| | | border-radius: 5px; |
| | | width: 3px; |
| | | } |
| | | |
| | | .circle { |
| | | width: 8px; |
| | | height: 8px; |
| | | border-top-right-radius: 50px; |
| | | border-top-left-radius: 50px; |
| | | border-bottom-left-radius: 50px; |
| | | border-bottom-right-radius: 50px; |
| | | background-color: $uni-text-color-disable; |
| | | } |
| | | |
| | | .uni-section__content { |
| | | flex-direction: column; |
| | | flex: 1; |
| | | color: $uni-text-color; |
| | | } |
| | | |
| | | .uni-section__content-title { |
| | | font-size: $uni-font-size-base; |
| | | color: $uni-text-color; |
| | | } |
| | | |
| | | .distraction { |
| | | flex-direction: row; |
| | | align-items: center; |
| | | } |
| | | |
| | | .uni-section__content-sub { |
| | | font-size: $uni-font-size-sm; |
| | | color: $uni-text-color-grey; |
| | | } |
| | | </style> |