收藏
回答

关于picker-view 的mask的背景渐变样式设置

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug picker-view 微信iOS客户端 6.6.3 2.2.0

如题,自己在使用picker-view组件时,想把picker-view的背景色改成另一个颜色,以符合视觉稿。通过一番摸索后发现,picker-view背景显示白色的原因是因为其上方的遮罩层设置了带透明度的白色,故自己想从设置mask的背景色来解决这个问题。但是当设置了mask的渐变背景后,发现渐变只覆盖了mask的上半部分。


- 请问如何设置能使渐变色覆盖mask的全部呢?。通过自己的观察发现,picker-view组件 中mask的默认背景渐变样式是从顶端开始到选中框上方,不透明度逐渐降低,而后选中框上方完全透明,再从选中框下方开始直到末尾不透明度逐渐增加,呈现一种以选中框为轴两端对称的渐变效果,请问是否有便捷方法能设置mask的样式以模仿这种效果,只是背景色稍加变换?



最后一次编辑于  2018-07-24
回答关注问题邀请回答
收藏

2 个回答

  • 曾阿彬
    曾阿彬
    2020-05-07

    研究和测试后,我这样写实现对称的渐变样式

    样式名:indicator-class="indicator"

    样式内容:

    .indicator {
      position: relative;
    }
    
    
    .indicator::after {
      position: absolute;
      content'';
      width100%;
      height1px;
      border-colorrgba(2552552550.3);
      background: none;
    }
    
    
    .indicator::before {
      position: absolute;
      content'';
      width100%;
      height1px;
      border-colorrgba(2552552550.3);
      background: none;
      }
    

    ------

    样式名:mask-class="mask"

    样式内容:

    .mask {
      background: none;
    }
    .mask::after {
      position: absolute;
      content'';
      top0;
      left0;
      right0;
      bottom0;
      width100%;
      height100%;
      backgroundlinear-gradient(to bottom,
          rgba(50461310.980%,
          rgba(50461310.149%,
          rgba(5046131050%,
          rgba(50461310.151%,
          rgba(50461310.98100%) no-repeat;
    }
    
    2020-05-07
    有用 5
    回复 5
    • 周超
      周超
      2020-10-19
      挺好,解决了问题
      2020-10-19
      回复
    • 走到累趴
      走到累趴
      2021-12-31
      nice
      2021-12-31
      回复
    • dps 扫码投屏服务
      dps 扫码投屏服务
      2022-07-04
      多谢分享
      2022-07-04
      回复
    • 哈哈哈哈哈
      哈哈哈哈哈
      2023-06-14
      太强大了啊(哭泣)
      2023-06-14
      回复
    • 微风抚少年
      微风抚少年
      11-15
      牛逼啊
      11-15
      回复
  • 得鹿梦鱼
    得鹿梦鱼
    2023-03-24

    首先谢谢分享,我的需求是深色模式下 pick-view 的样式要和浅色模式下的样式一样,试了很多,都不行,终于翻到你的文章了,不错,我试着改了下,如下:

    .mask::after {
        position: absolute;
        content'';
        top0;
        left0;
        right0;
        bottom0;
        width100%;
        height100%;
        backgroundlinear-gradient(to bottom,
                rgba(25525525510%,
                rgba(255255255050%,
                rgba(2552552551100%) no-repeat;
    }
    


    最后实现了这个效果,但是有个地方很疑惑:opacity 指定不透明度。从0.0(完全透明)到1.0(完全不透明) RGBA(255,255,255,1)代表完全不透明,RGBA(255,255,255,0.5)代表半透明。

    这就很操蛋了,上述代码必须是 1 不透明才能实现半透明效果

    2023-03-24
    有用
    回复
登录 后发表内容