页面设计是这样的
页面滚动是这样的效果:导航栏标题被遮挡
最后实现到那个滚到一定区域后有背景色
onPageScroll: function (e) {
if (e.scrollTop > 50) {
this.data.rgb == 1 ? '' : this.setData({
rgb: 1
} else {
this.data.rgb == 0 ? '' : this.setData({
rgb: 0
wxml页面
我选的是第二种实现方式,相对来说就是比较简单的
实现原理就是利用banner过渡事件的event值的dx属性计算出一个0~1的比例值,然后用计算出的比例值再算出新的rgb色值
下面上代码: (我当前写的是小程序版本,H5 js可以直接复用只需改一下wxml部分)
WXML部分
微信小程序的页面背景色默认是白色,但可以自主更改。
如果想所有页面的背景色都同时一种颜色,只需在app.wass里修改,如果想每个页面的背景色都不一样,则需要在每个页面对应的.wass文件里修改。
一开始犯了一个错误,以为在json文件里的window中修改backgroundColor,如
"window": {
"backgroundColor": "#eeeeee",
wx.setNavigationBarColor({
frontColor: '#ffffff', // 必写项【该字体颜色仅支持 #ffffff 和 #000000 】
backgroundColor: '#25BDCE', // 传递的颜色值【仅支持有效值为十六进制颜色】
animation: { // 可选项
dura..
https://developers.weixin.qq.com/miniprogram/dev/api/ui/window/wx.onWindowResize.html
监控窗口的大小时候发生了变化
<button bindtap="window">窗口监听操作</button>
</view>
// 获取滚动距离scrollTop
const scrollTop = e.detail.scrollTop;
// 设置滚动距离阈值,超过该值则将导航栏背景颜色设为白色,否则设为透明
const threshold = 100;
// 获取导航栏节点
const navBar = uni.createSelectorQuery().select('.nav-bar');
if (scrollTop > threshold) {
navBar.css('background-color', '#ffffff');
navBar.css('color', '#000000');
} else {
navBar.css('background-color', 'transparent');
navBar.css('color', '#ffffff');
onPageScroll(e) {
this.onScroll(e);
onReachBottom() {
// 页面滚动到底部的时候触发加载更多
</script>
<style>
/* 这里是页面样式 */
</style>
在上述代码中,通过监听页面滚动事件`onPageScroll`和调用`onScroll`方法来实现改变导航栏样式的效果。根据滚动距离设置导航栏的背景颜色,当滚动距离超过阈值时,将导航栏背景颜色设为白色,否则设为透明。请注意,需要将`.nav-bar`替换为你实际使用的顶部导航栏的class或id。
这样就可以实现滚动页面时顶部导航栏的透明变白色的效果了。希望能对你有所帮助!如有更多问题,请随时提问。