You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
3.2 KiB
Vue

<template>
<view class="uni-title__box" :style="{'align-items':textAlign}">
<text class="uni-title__base" :class="['uni-'+type]" :style="{'color':color}">{{title}}</text>
</view>
</template>
<script>
/**
* Title 章节标题
* @description 章节标题通常用于记录页面标题使用当前组件uni-app 如果开启统计将会自动统计页面标题
* @tutorial https://ext.dcloud.net.cn/plugin?id=1066
* @property {String} type = [h1|h2|h3|h4|h5] 标题类型
* @value h1 一级标题
* @value h2 二级标题
* @value h3 三级标题
* @value h4 四级标题
* @value h5 五级标题
* @property {String} title 章节标题内容
* @property {String} align = [left|center|right] 对齐方式
* @value left 做对齐
* @value center 居中对齐
* @value right 右对齐
* @property {String} color 字体颜色
* @property {Boolean} stat = [true|false] 是否开启统计功能呢如不填写type值默认为开启填写 type 属性默认为关闭
*/
export default {
props: {
type: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
align: {
type: String,
default: 'left'
},
color: {
type: String,
default: '#333333'
},
stat: {
type: [Boolean, String],
default: ''
}
},
data() {
return {
};
},
computed: {
textAlign() {
let align = 'center';
switch (this.align) {
case 'left':
align = 'flex-start'
break;
case 'center':
align = 'center'
break;
case 'right':
align = 'flex-end'
break;
}
return align
}
},
watch: {
title(newVal) {
if (this.isOpenStat()) {
// 上报数据
if (uni.report) {
uni.report('title', this.title)
}
}
}
},
mounted() {
if (this.isOpenStat()) {
// 上报数据
if (uni.report) {
uni.report('title', this.title)
}
}
},
methods: {
isOpenStat() {
if (this.stat === '') {
this.isStat = false
}
let stat_type = (typeof(this.stat) === 'boolean' && this.stat) || (typeof(this.stat) === 'string' && this.stat !==
'')
if (this.type === "") {
this.isStat = true
if (this.stat.toString() === 'false') {
this.isStat = false
}
}
if (this.type !== '') {
this.isStat = true
if (stat_type) {
this.isStat = true
} else {
this.isStat = false
}
}
return this.isStat
}
}
}
</script>
<style scoped>
/* .uni-title {
} */
.uni-title__box {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
align-items: flex-start;
justify-content: center;
padding: 8px 0;
flex: 1;
}
.uni-title__base {
font-size: 15px;
color: #333;
font-weight: 500;
}
.uni-h1 {
font-size: 20px;
color: #333;
font-weight: bold;
}
.uni-h2 {
font-size: 18px;
color: #333;
font-weight: bold;
}
.uni-h3 {
font-size: 16px;
color: #333;
font-weight: bold;
/* font-weight: 400; */
}
.uni-h4 {
font-size: 14px;
color: #333;
font-weight: bold;
/* font-weight: 300; */
}
.uni-h5 {
font-size: 12px;
color: #333;
font-weight: bold;
/* font-weight: 200; */
}
</style>