• 微信小程序遮罩层悬浮窗踩坑


    总结一下踩坑的几个点:

    遮罩层之后底层的页面还会触发滚动

    遮罩层只在页面初始的地方有,如果滚动到下方就没有了

     如图,这样肯定是不符合需求的,先看一下这个不太符合需求的代码

     .wxml

    1. <view class="father">
    2. <view class="container" bindtap="open">
    3. Weixin
    4. view>
    5. <view class="container" bindtap="open">
    6. Weixin
    7. view>
    8. <view class="container" bindtap="open">
    9. Weixin
    10. view>
    11. <view class="container" bindtap="open">
    12. Weixin
    13. view>
    14. <view class="container" bindtap="open">
    15. Weixin
    16. view>
    17. <view class="container" bindtap="open">
    18. Weixin
    19. view>
    20. <view class="container" bindtap="open">
    21. Weixin
    22. view>
    23. <view class="container" bindtap="open">
    24. Weixin
    25. view>
    26. <view class="container" bindtap="open">
    27. Weixin
    28. view>
    29. <view class="container" bindtap="open">
    30. Weixin
    31. view>
    32. <view class="container" bindtap="open">
    33. Weixin
    34. view>
    35. <view class="box" wx:if="{{openBox}}">
    36. <view class="tankuang">
    37. <view class="text">弹框内容 view>
    38. <button bindtap="close">取消button>
    39. view>
    40. view>
    41. view>

    .js

    1. // index.js
    2. Page({
    3. data:{
    4. openBox:false,
    5. },
    6. //打开弹框
    7. open(){
    8. this.setData({
    9. openBox:true
    10. })
    11. },
    12. //关闭弹框
    13. close(){
    14. this.setData({
    15. openBox:false
    16. })
    17. }
    18. })

    .wxss

    1. /**index.wxss**/
    2. /*整个遮罩层的样式*/
    3. .box{
    4. position:absolute;
    5. top: 0;
    6. left: 0;
    7. width: 100%;
    8. height: 100vh;
    9. background-color: rgba(1, 1, 1, .1);
    10. }
    11. /*弹框的样式*/
    12. .tankuang{
    13. position: absolute;
    14. top: 50%;
    15. left: 50%;
    16. transform: translate(-50%,-80%);
    17. background-color: #ededed;
    18. border-radius: 10px;
    19. width: 80%;
    20. height: 430rpx;
    21. }
    22. /*弹框文字的样式*/
    23. .text{
    24. margin-top: 150rpx;
    25. text-align: center;
    26. }
    27. /*弹框按钮的样式*/
    28. button{
    29. background-color: aqua;
    30. margin-top: 120rpx;
    31. }

    遮罩层只有一部门,不跟着列表滚动而滚动是因为用了绝对定位让他定位在了绝对位置。所以会被滑上去。而弹窗后如果不需要滚动的话需要给遮罩层这个大盒子加个 catchtouchmove="return"属性。当我们还要滑动页面的时候就会出现这样的警告,在手机上显示的话就不能滑动了,用电脑的虚拟机是用鼠标的滚轮还是会滑动。

     现在是不会滚动了,但是如果我们在最后一个Weixin点击触发弹框,我们发现弹框和遮罩层都不见了。原来他还在上面。这个问题要如何解决?

     我们只需要将弹窗的绝对定位设置成固定定位。

    1. .box{
    2. position:fixed';
    3. top: 0;
    4. left: 0;
    5. width: 100%;
    6. height: 100vh;
    7. background-color: rgba(1, 1, 1, .1);
    8. }

    这样不管我们在列表的那里点击弹框和遮罩层都会出现在整个页面

     这里直接使用的是,没有出现遮罩层颜色渐变的情况,如果是列表的话可能会出现遮罩层颜色渐变,这时候就需要给他在加一个z-index: 1;属性,注意这个1视情况而定。

    最后一个问题是按钮的大小的问题

    1. button{
    2. background-color: aqua;
    3. margin-top: 120rpx;
    4. width: 10000px;
    5. }

    我们给button设置宽,设置的这么离谱,但是我们看看页面的样式

     再设置一个小的width: 10px;

     

    它雷打不动,后来发现这个宽度只能在行内设置

     <button bindtap="close" style="width: 50px;">取消button>

     

  • 相关阅读:
    Python-NumPy系统教程
    【计算机网络】从输入URL到页面都显示经历了什么??
    什么是Azure OpenAI?
    SparkSQL外部数据源
    见微知著,从两道有意思的 CSS 面试题,考察你的基础
    【模拟 简易银行系统~python】
    MySQL单表操作&约束
    2021年下半年软件设计师下午真题答案及解析(二)
    CVPR 2022上人脸识别相关的论文分类整理
    思科设备路由综合配置
  • 原文地址:https://blog.csdn.net/m0_53644435/article/details/126866738