微信小程序canvas组件无法被弹出层覆盖-解决方案

提示:可直接看“总结”和“我的解决方案”。

新版本中官方方案:cover-view,cover-image

参考:https://developers.weixin.qq.com/miniprogram/dev/component/cover-view.html

cover-view内只支持嵌套 cover-view、cover-image,可在 cover-view 中使用 button。也就是说若cover-view内嵌套了其它类型的view,则在真机上会被忽略!
如下:scroll-view在真机上是被忽略的。

如下:scroll-view在真机上是被忽略的。

<cover-view>
    <scroll-view>...</scroll-view>
<cover-view>

但是,我错了,在andriod真机上,可能还是不好使!!

官方给出的答案:让你的cover-view延迟渲染,即在canvas渲染完之后!(但是canvas是延后动态加载的情况怎么办?

的确,能遮盖。

但是自定义组件延迟加载后仍然无效!最多第一次显示,但第二次就不显示了。于是找到官方这句:

15.bug: 自定义组件嵌套 cover-view 时,自定义组件的 slot 及其父节点暂不支持通过 wx:if 控制显隐,否则会导致 cover-view 不显示

也就是说:自定义组件中cover-view是无效的,不显示!

尝试background方案:背景图

即设置弹出层的background背景图片。可以采用base64方案。制作方法:

1、用图像制作工具制作一个1x1像素的图片,设置成你想要的背景色,保存为png格式;

2、最好用压缩工具压缩一下,保持最小,一般在50字节左右最好;

3、用在线转base64工具转一下,如:http://imgbase64.duoshitong.com/,生成类似如下内容:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQImWP4DwQACfsD/eNV8pwAAAAASUVORK5CYII=

4、放到background的url中:

background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQImWP4DwQACfsD/eNV8pwAAAAASUVORK5CYII=) repeat;

结论:无效!

坑记录

  1. 采用自定义组件弹层,slot内不能使用cover-view,cover-image;若自定义组件本身使用了cover-view,slot内容也不能使用view等组件。切记:cover-view内中只能嵌套cover-view和cover-image。如下:

    情况一:自定义组件本身使用cover-view

my-component.wxml

    <cover-view ..>
     <slot></slot>
    </cover-view

my-page.wxml

    <my-component ..>
     <view>view是无效的</view>
     <cover-view>文字内容不会显示</cover-view>
     <cover-image src='..' alt="图片也不会显示"></cover-image>
    </my-component>

情况二:自定义组件本身不使用cover-view

my-component

    <view ..>
     <slot></slot>
    </view

my-page.wxml

     <view>view有效,文字正常显示,但不能覆盖canvas</view>
     <cover-view>文字内容不会显示</cover-view>
     <cover-image src='..' alt="图片也不会显示"></cover-image>
    </my-component>
  1. 采用自定义组件弹层,slot内容只能是纯文字才可以正常覆盖canvas等原生组件

my-component.wxml

<cover-view ..>
 <slot></slot>
</cover-view>

my-page.wxml

<my-component ..>
 这里只能是纯文字
</my-component>
  1. 不使用自定义组件,cover-view在canvas之前渲染,不会覆盖canvas。

总结:

  1. 不要使用hidden属性来控制弹层,采用wx:if动态渲染弹出层。

  2. 使用cover-view制作自定义弹层组件时,slot内空只能是纯文字。

  3. 使用view制作自定义弹层组件时,slot使用cover-view也是覆盖不了canvas的

  4. 不使用自定义组件,可以使用cover-view延后canvas渲染的情况下,才能有效覆盖(这是唯一有效的覆盖)

我的解决方案:

  1. 采用自定义组件,则在弹层时将下方的canvas隐藏;自定义组件中使不使用view包裹

  2. 不使用自定义组件,采用wx:if控制cover-view弹层,正常覆盖canvas

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容