前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序 Canvas 层级问题

小程序 Canvas 层级问题

作者头像
前端黑板报
发布2020-09-01 17:23:47
1.9K0
发布2020-09-01 17:23:47
举报
文章被收录于专栏:前端黑板报前端黑板报

在使用 canvas 编辑图片,使用添加弹框来自定义添加文字,在微信开发工具上是正常弹窗不会被挡到,到手机上测试,发现弹框一直会在 canvas 组件后面

在官方文档中可以看到 原生组件说明:

  • 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。
    • 后插入的原生组件可以覆盖之前的原生组件。
  • 原生组件还无法在 picker-view 中使用。
    • 基础库 2.4.4 以下版本,原生组件不支持在 scroll-view、swiper、movable-view 中使用。
  • 部分CSS样式无法应用于原生组件,例如:
    • 无法对原生组件设置 CSS 动画
    • 无法定义原生组件为 position: fixed
    • 不能在父级节点使用 overflow: hidden 来裁剪原生组件的显示区域
  • 原生组件的事件监听不能使用 bind:eventname 的写法,只支持 bindeventname。原生组件也不支持 catch 和 capture 的事件绑定方式。
  • 原生组件会遮挡 vConsole 弹出的调试面板。 在工具上,原生组件是用web组件模拟的,因此很多情况并不能很好的还原真机的表现,建议开发者在使用到原生组件时尽量在真机上进行调试。

这就知道了为什么弹框会一直被挡住了,在小程序里面,原生组件的层级最高。

虽然提供了 cover-viewcover-image 组件,可以覆盖在原生组件上。但是不符合我的业务逻辑,我就没有用,在 google 之后,很多方式都是首先 canvas 组件转换为临时图片,然后用 <image></image> 将图片显示出来,但是这样无法继续编辑 canvas

所以我想了用将 canvasimgae 一起用,代码如下:

代码语言:javascript
复制
## .wxml

<view>
<canvas-drag class="{{radarImg ? 'gun' : ''}}" id="canvas-drag" graph="{{graph}}" width="750" height="1030">
</canvas-drag>
<image class="{{!radarImg ? 'gun' : ''}} radarImg" src='{{radarImg}}'></image>

<view class="btn" bindtap="showModal">添加文字</view>
</view>

一开始不需要 image 组件,所以我们让他 .gun 到屏幕外面去了。同样,需要用到 image 的时候,我们会让 canvas.gun 出屏幕外去

代码语言:javascript
复制
## .wxss

.radarImg {
width: 750rpx;
height: 1030rpx;
}

.gun {
position: absolute;
left: -999px;
top: -0px;
}

在点击 添加文字 的时候,然后保存成临时文件,放到 image 组件里去,canvas 组件隐藏,弹出弹框,点击确定,canvas 组件重新回来。这样可以重新编辑,也可以弹框。

目前10000+人已关注加入我们

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端黑板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档