• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序中canvas绘制图表层级问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

引自官方文档

  在微信小程序中存在一类特殊的组件,该类组件是由客户端创建的原生组件。这些组件有:

  • camera
  • canvas
  • input(仅在focus时表现为原生组件)
  • live-player
  • live-pusher
  • map
  • textarea
  • video

由于原生组件脱离在 WebView 渲染流程外,因此在使用时有以下限制:

  • 原生组件的层级是最高的,所以页面中的其他组件无论设置 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组件模拟的,因此很多情况并不能很好的还原真机的表现,建议开发者在使用到原生组件时尽量在真机上进行调试。

uChart 绘制图表由于层级高导致拉出的抽屉无法覆盖图表问题。

    方案一:使用cover-view、cover-image代替view组件实现抽屉组件

    方案二:打开抽屉时候将已渲染的图表转化为图片替换canvas绘制的图表

  由于cover-view、cover-image组件存在样式的限制,所以适用于简单的层级比较少的业务开发,而对于嵌套层级较多的业务显然方案二更适合。

  以下是图表转为图片的代码,默认转为png格式的图片

 

                const context = uni.createCanvasContext(canvasId, _self);
                context.draw(false, () => {
                    setTimeout(() => {
                        uni.canvasToTempFilePath({
                            canvasId: canvasId,
                            complete(res) {
                                console.log(res)
                                _self.img = res.tempFilePath;
                            }
                        })
                    }, 1000)
                })

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序——navigator无法跳转发布时间:2022-07-22
下一篇:
小程序之旅——第六站(模板首页)发布时间:2022-07-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap