js+vue,前端关于页面滚动让头部菜单淡入淡出实现原理

今天遇到个需求:我这里借用小米商城的详情页做个比喻吧。

刚开始其商品详情页是这样的:

当滚动到一定高度时,是这样的:

可以看到当滚动到轮播图底下的时候,详情页的菜单完全显现出来。

以下上代码:

HTML:

html 复制代码
<div class="detail-header">
			<div class="left operate" :style="{'background-color':iconStyle.BackgroundColor,'color':iconStyle.color}">
				<span class="iconfont icon-fanhui"></span>
			</div>
			<div class="active-box" :style="{'opacity':Opacity}">
				<div>商品</div>
				<div>评价</div>
                <div>评价</div>
                <div>详情</div>
                <div>推荐</div>
			</div>
			<div class="right operate" :style="{'background-color':iconStyle.BackgroundColor,'color':iconStyle.color}">
				<span class="iconfont icon-home"></span>
			</div>
			<div class="header-bg" :style="{'opacity':Opacity}"></div>
		</div>

css:

css 复制代码
.detail-header{
			position: absolute;
			left: 0;
			right: 0;
			height: 1.173333rem;
			z-index: 999;
			.active-box{
				position: absolute;
				left: 50%;
				transform: translateX(-50%);
				white-space: nowrap;
				display: flex;
				align-items: center;
				justify-content: center;
				line-height: 1.173333rem;
				font-size: 0.426667rem;
				opacity:0;
				z-index:67;
				>div{
					padding: 0 0.4rem;
				}
			}
			.operate{
				position: absolute;
				width: 0.906667rem;
				height: 0.906667rem;
				line-height: 0.906667rem;
				border-radius: 50%;
				background-color: rgba(0,0,0,.3);
				color: #fff;
				text-align: center;
				margin: 0.133333rem;
				display: table;
				z-index: 58;
				.iconfont{
					display: table-cell;
					font-size: 0.4rem;
					vertical-align: middle;
				}
			}
			.left{
				left:0;
			}
			.right{
				right: 0;
			}
			.header-bg{
				background-color: #fff;
				height: 100%;
				opacity: 0;
				z-index: 66;
			}
		}

js:

javascript 复制代码
data(){
			return{
				Opacity:0,
				iconStyle:{
					BackgroundColor:'rgba(0, 0, 0, 0.3)',
					color:'#fff'
				}
			}
		},
ContentScroll(e){
				let top = (e.target.scrollTop / 120);
				this.Opacity = top >= 1?1:top;
				console.log(top)
				if(top >= 1){
					this.iconStyle.BackgroundColor = 'unset'
					this.iconStyle.color = '#333'
				}else{
					this.iconStyle.BackgroundColor = 'rgba(0, 0, 0, 0.3)'
					this.iconStyle.color = '#fff'
				}
			}

在上面代码中可以看出,头部代码是绝对定位的,头部不要设置背景图,因为我么是通过设置opacity来控制元素的显示隐藏的,所以我们用元素来代替背景的作用。只要设置好图层z-index就不会发生:操作菜单和按钮被遮挡的情况。记住要设置定位哦!

这里的e.target.scrollTop / 120 ;120是你轮播图的高度,根据自己的情况而定。

注意:这里主要是记录实现原理,js代码没那么完整,大家复制的时候注意。还有就是做的没小米商城那么丝滑,大家可以自行优化以下。

相关推荐
风度前端3 分钟前
npm 2026安全新规下的免登录发包策略
前端
冴羽18 分钟前
2026 年前端必须掌握的 4 个 CSS 新特性!
前端·javascript·css
rgeshfgreh31 分钟前
Python流程控制:从条件到循环实战
前端·数据库·python
狗头大军之江苏分军38 分钟前
告别旧生态:Ant Design 6 不再支持 IE 与现代前端趋势解读
前端·javascript·后端
C_心欲无痕38 分钟前
nginx - 开启 gzip 压缩
运维·前端·nginx
闲云一鹤43 分钟前
2026 最新 ComfyUI 教程 - 本地部署 AI 生图模型 - Z-Image-Turbo
前端·人工智能·ai编程
开开心心_Every1 小时前
安卓后台录像APP:息屏录存片段,行车用
java·服务器·前端·学习·eclipse·edge·powerpoint
狗头大军之江苏分军1 小时前
Ant Design 6.0 正式发布:从 V5 到 V6 有哪些变化?
前端
优弧1 小时前
Claude 终于对普通人下手了!Cowork 发布,你的最强 AI 打工搭子来了!
前端·后端
Zoey的笔记本1 小时前
敏捷与稳定并行:Scrum看板+BPM工具选型指南
大数据·前端·数据库·python·低代码