You can not 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
171 lines
3.2 KiB
<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 { |
|
name: "UniTitle", |
|
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> |