1111
This commit is contained in:
@@ -1,53 +1,89 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="_navLayout" :style="{background: navBg,'height':_height}">
|
<!-- ②这里不使用props改用data -->
|
||||||
|
<view class="_navLayout" :style="{background: navBackground,'height':_height}">
|
||||||
<view :style="{'height':_height3}"></view>
|
<view :style="{'height':_height3}"></view>
|
||||||
<view class="_nav-real" :style="{'height':_height2}">
|
<view class="_nav-real" :style="{'height':_height2}">
|
||||||
<view class="_navText">登录</view>
|
<view class="_navText">登录</view>
|
||||||
<image class="_navIcon" src="../../static/wx_back.png">
|
<image v-if="showIcon" class="_navIcon" src="../../static/wx_back.png" @click="clickIcon">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
/**
|
||||||
|
* 全局默认背景透明,supportChange= false 会对默认色变成不透明
|
||||||
|
*/
|
||||||
|
const defaultTransparentBg = "linear-gradient(89.26deg, rgba(254,144,56,0) 0.75%,rgba(255,177,118,0) 99.78%)";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "NavBar",
|
name: "NavBar",
|
||||||
props: {
|
props: {
|
||||||
// 渐变透明使用此属性即可
|
// 是否支持透明
|
||||||
// -webkit-linear-gradient(top, rgba(0,0,0,1)0%,rgba(0,0,0,0.5)66%, rgba(0,0,0,0)99%);
|
supportChange: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
// 背景色
|
||||||
|
// 默认橘色渐变全透明,如果supportChange=false,默认为橘色渐变不透明
|
||||||
navBg: {
|
navBg: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "rgba(0,0,0,0.0)"
|
default: defaultTransparentBg
|
||||||
},
|
},
|
||||||
|
// 渐变开始的高度 0->1
|
||||||
startChangeHeight: {
|
startChangeHeight: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0
|
default: 0
|
||||||
},
|
},
|
||||||
|
// 渐变停止的高度
|
||||||
|
// ->1
|
||||||
endChangeHeight: {
|
endChangeHeight: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0
|
default: 0
|
||||||
|
},
|
||||||
|
// 显示icon
|
||||||
|
showIcon: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
// ①用一个新的变量接收props属性
|
||||||
|
navBackground: this.navBg,
|
||||||
_height: '0px',
|
_height: '0px',
|
||||||
_height2: '0px',
|
_height2: '0px',
|
||||||
_height3: '0px',
|
_height3: '0px',
|
||||||
_right: '0px',
|
_right: '0px',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
// mounted能拿到data值
|
||||||
|
if (!this.supportChange) {
|
||||||
|
if (this.navBg === defaultTransparentBg) {
|
||||||
|
// 使用默认的时候由于是全透明,需要改成不透明
|
||||||
|
// ③达到修改props属性的结果
|
||||||
|
this.navBackground = defaultTransparentBg.replaceAll(",0)", ",1)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
created() {
|
created() {
|
||||||
|
// create阶段能拿取到了props的值,需要使用this.变量名
|
||||||
|
// 但是拿不到data的值
|
||||||
|
// 可以拿到script标签的全局属性,不要使用this,直接变量名就可以使用
|
||||||
let navInfo = getApp().globalData.navInfo
|
let navInfo = getApp().globalData.navInfo
|
||||||
this._height = navInfo.navHeight
|
this._height = navInfo.navHeight
|
||||||
this._height2 = navInfo.navUseHeight
|
this._height2 = navInfo.navUseHeight
|
||||||
this._height3 = navInfo.statusBarHeight
|
this._height3 = navInfo.statusBarHeight
|
||||||
this._right = navInfo.navPaddingRight
|
this._right = navInfo.navPaddingRight
|
||||||
console.log(this._height);
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
/**
|
||||||
|
* 自定义颜色渐变的值
|
||||||
|
*/
|
||||||
alpha(res) {
|
alpha(res) {
|
||||||
|
if (!this.supportChange)
|
||||||
|
return '1.0'
|
||||||
if (res.scrollTop > this.startChangeHeight) {
|
if (res.scrollTop > this.startChangeHeight) {
|
||||||
// 可以开始变化了
|
// 可以开始变化了
|
||||||
if (res.scrollTop < this.endChangeHeight) {
|
if (res.scrollTop < this.endChangeHeight) {
|
||||||
@@ -60,9 +96,19 @@
|
|||||||
// 保持无色
|
// 保持无色
|
||||||
return '0.0'
|
return '0.0'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 提供默认的颜色变化功能
|
||||||
|
*/
|
||||||
|
defaultColorBgAlpha(res) {
|
||||||
|
let x = this.alpha(res)
|
||||||
|
this.navBackground = "linear-gradient(89.26deg, rgba(254,144,56," + x +
|
||||||
|
") 0.75%,rgba(255,177,118," + x + ") 99.78%)"
|
||||||
|
},
|
||||||
|
clickIcon() {
|
||||||
|
uni.navigateBack()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -71,7 +117,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: sticky;
|
position: fixed;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
top: 0
|
top: 0
|
||||||
}
|
}
|
||||||
@@ -86,6 +132,7 @@
|
|||||||
|
|
||||||
._navText {
|
._navText {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
._navIcon {
|
._navIcon {
|
||||||
|
|||||||
Reference in New Issue
Block a user