监听页面滚动事件(以顶部导航栏渐显背景为例

<hNav :class="navActive?'navBg':'navBgNone'"></hNav>
export default {
		data() {
			return {
				navActive:false,
				}
	},
		mounted() {
			//页面滑动的距离
			window.addEventListener('scroll', this.handleScroll);
		
		},
		beforeUnmount() {
			window.removeEventListener('scroll', this.handleScroll);
		},
		methods:{
		// 当前页面滑动切换导航
			 handleScroll() {
			      const scrollPos = window.pageYOffset || document.documentElement.scrollTop;
			      const threshold = 0; // 滚动到顶部的阈值
			      if (scrollPos > threshold) {
			        this.navActive = true; // 滚动超过阈值时
			      } else {
			        this.navActive = false; // 滚动未达到阈值时
			      }
			    },
		}
}
	.navBg{
		@keyframes navBg {
		  0% {
		    background-color: transparent;
		  }
		  100% {
		    background-color: white;
			box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
		  }
		}
		 background-color: transparent;
		  animation: navBg 0.8s ease-in-out forwards;
		
	}
	.navBgNone{
		@keyframes navBgNone {
		  0% {
			  background-color: white;
			  box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
		  
		  }
		  100% {
		     background-color: transparent;
			 box-shadow:none;
		  }
		}
		background-color: white;
		box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
		  animation: navBgNone 0.8s ease-in-out forwards;
		
	}

页面滚动时组件1,切换为组件2且渐显背景

正好有页面有这个需求,一并写在这里了。

<hNav  v-if="showTitle==2 || navActive" :class="navActive?'navBg':'navBgNone'"></hNav>
		<hNav2  v-if="showTitle==1 && !navActive " :class="navActive?'navBg':'navBgNone'"></hNav2>

其余是一样的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于uniapp开发的小程序,你可以通过以下步骤来实现滚动页面顶部导航的透明变白色: 1. 在App.vue中设置全局的顶部导航样式: ```css <style> .nav-bar { background-color: transparent; color: #ffffff; } </style> ``` 2. 在每个页面的.vue文件中,监听滚动事件并动态修改顶部导航的样式: ```html <template> <view> <!-- 这里是页面内容 --> </view> </template> <script> export default { onScroll(e) { // 获取滚动距离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。 这样就可以实现滚动页面顶部导航的透明变白色的效果了。希望能对你有所帮助!如有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值