小程序下拉菜单添加遮罩样式

在这里插入图片描述
酱紫的效果。
第一步:添加遮罩层。使用position赋值z-index
第二步:禁止底部列表滚动
第三步:点击遮罩层列表收回

做法详细思路
第一步
我在整个整改页面加了一个遮罩层,而遮罩层的判断变量与下拉列表的判断变量是一致的,因此页面初始加载,整改列表也被隐藏了
在这里插入图片描述

于是我将marks(遮罩层)放在了这个位置1,但是他占了位置,我需要将他脱离文档流这样才能将他悬浮在列表之上。所以我开始用position:absolute,position:relative。但是尝试多次列表信息都在遮罩层之上。于是我看资料说。父级设置relative,不需要设置z-index,子级absolute,设置z-index=-1这样就将自己遮盖,而我试过之后依旧不好使。我以为是我组件中使用了relative因此不好使。但是并不是。
后来我将整个页面设置了relative,marks和组件分别设置了absolute,marks的z-inde设置99依旧在列表之下。后来我将列表组件改为z-inde=2就好了。
第二步
禁止底部滚动,因为marks设置absolute,所以需要给固定的高度,一滚动就滚动到下边数据了。开始我使用小程序的catchtouchmove,说的可好了,用起来就好使。结果我用了完全不好使,说是什么穿透之类的,所以pass掉。
又开始使用scroll-view,scroll-y=false,因为组件使用的absolute脱离了文档流,所以我需要设置scroll的高度,但是在父级就需要获取到子组件的页面高度,但是初始化子组件的attache函数根本获取不到节点,所以我又放弃了。我又试着把scroll-view放到子组件中,但是子组件不动,父组件还是会动,因为父组件被子组件撑了起来。所以又放弃了
最后使用了position:fixed,动态给position,如果遮罩层出现就给position:fixed。完美解决
第三步
给marks一个点击事件。但是需要子组件中的是否显示,显示哪个页面的判断值。在这里插入图片描述
将子组件的改变值传回父页面。这是显示marks。
但是要是撤回marks我还需要调用子组件关闭遮罩层的函数
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值