热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Copy攻城狮日记】踩坑小顺序之canvas的显现层级题目

Created2019-4-318:29:53byhuqiUpdated2019-4-319:12:22byhuqi↑残局一张图,故事端赖编↑从一个需求提及狼叔@i5ting曾说过

Created 2019-4-3 18:29:53 by huqi
Updated 2019-4-3 19:12:22 by huqi

《【Copy攻城狮日记】踩坑小顺序之canvas的显现层级题目》

↑残局一张图,故事端赖编↑

从一个需求提及

狼叔@i5ting 曾说过:“纯真讲手艺进阶点意义不大,离开场景都是耍流氓”。本日,照旧从一个需求提及。什么需求呢?一个二维码,一个二次确认弹窗。这里的二维码是前端天生的,二维码下边有个button,点击button调起自定义的弹窗组件。照旧是很简单的需求,然则关于“资深”的Copy攻城狮来讲,除了规划,其他的就只能去Copy了。剖析了一下能够须要的代码,就最先’刷刷刷’一顿CP(Copy&Paste)操纵猛如虎,结果跑下代码发明error二百五。迥殊是真机跑的时刻,题目迥殊多。像此次的题目,开发者东西上压根就发明不了,幸亏习惯性真机预览,不然一通push就等着赋闲了。照样坑在基本不稳固,文档看得不深切,对小顺序原生组件应当注重的事项把握不准,才会掉入这个异常基本的坑。

《【Copy攻城狮日记】踩坑小顺序之canvas的显现层级题目》
(图片来源于收集)

canvas天生二维码

一般来讲,碰到这类相似的须要,我都邑先找找被人造的轮子,尝试一下,有适宜的就直接拿过来用了。此次用的是@yingye 大佬开源的weapp-qrcode,这个js应当是自创了jquery-qrcode 和 node-qrcode,有兴致的同砚能够研讨研讨,生码的逻辑应当是相似的,只是小顺序中没有DOM操纵,都是应用canvas来完成的。详细怎样完成,列位看客能够直接看相干的源码或文档。我的完成:

wxml

wxss

canvas{
display: block;
margin: 0rpx auto; /** 居中 **/
}

js

drawQrcode({
width: 140, // 必需,二维码宽度,与canvas的width保持一致
height: 140, // 必需,二维码高度,与canvas的height保持一致
x: 0, // 非必需,二维码绘制的 x 轴肇端位置,默认值0
y: 0, // 非必需,二维码绘制的 y 轴肇端位置,默认值0
canvasId: 'myQrcode', // 非必需,绘制的canvasId
typeNumber: 10, // 非必需,二维码的盘算形式,默认值-1
text: '您的二维码内容', // 必需,二维码内容
callback(e) { // 非必需,绘制完成后的回调函数
console.log('e: ', e)
}
})

二维码结果:

《【Copy攻城狮日记】踩坑小顺序之canvas的显现层级题目》

canvas运用限定

当我页面如上图一样。底部有个按钮。点击唤起自定义的弹窗组件,在开发者东西上显现的结果非常一般。然则在真机上就会涌现笔墨开首的不和谐征象。canvas直接掩盖住了自定义组件。经由过程翻阅文档,您会发明官方迥殊写出了Bug&Tip

  • 3.tip:请注重原生组件运用限定。
  • 4.bug: 防止设置过大的宽高,在安卓下会有crash的题目

然后点开原生组件运用限定,就会发明本B.U.G的根本原因了:

  • 原生组件的层级是最高的,所以页面中的其他组件不管设置 z-index 为若干,都没法盖在原生组件上。

也就是说canvas会掩盖自定义的dialog组件。那末怎样处理呢?我的思绪是“曲线救国”–将canvas转成image。一不做二不休,撸起袖子,开干!

《【Copy攻城狮日记】踩坑小顺序之canvas的显现层级题目》

将canvas转换成image

既然原生组件(camera、canvas、focus时的input、live-player、live-pusher、map、textarea、video)这么牛逼,那就打压一下,去掉他们尊贵的身份,宽免他们享有的特权,完全ge他们的命,恢复他们的布衣身份。根据这个思绪,最先一步一步来完成
wxml


js

data: {
renderImg: ''
},
onLoad: function(){
drawQrcode({
width: 140, // 必需,二维码宽度,与canvas的width保持一致
height: 140, // 必需,二维码高度,与canvas的height保持一致
x: 0, // 非必需,二维码绘制的 x 轴肇端位置,默认值0
y: 0, // 非必需,二维码绘制的 y 轴肇端位置,默认值0
canvasId: 'myQrcode', // 非必需,绘制的canvasId
typeNumber: 10, // 非必需,二维码的盘算形式,默认值-1
text: '您的二维码内容', // 必需,二维码内容
callback(e) { // 非必需,绘制完成后的回调函数
console.log('e: ', e)
if(e.errMsg == 'drawCanvas:ok') { // 新增转图片
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 140,
height: 140,
canvasId: 'myQrcode',
success: function(res) {
me.setData({ renderImg: res.tempFilePath});
}
});
}
}
})
}

以大将canvas替换成image,不过碰到闪灼的题目,这是wx:if特有的,这里经由过程取巧的方法,只改了canvas的款式:
wxss

canvas{
display: block;
margin: 0rpx -9999px; /** 占位处理二维码闪屏 **/
}
image{
display: block;
margin: 0rpx auto; /** 居中 **/
}

至此,已填了这个canvas显现层级太高的坑。

《【Copy攻城狮日记】踩坑小顺序之canvas的显现层级题目》

如您有更好的计划,迎接提出斧正!
如您以为文章处理了您的题目,迎接打赏


推荐阅读
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • Mr.J 的 jQuery 学习笔记:第三十一讲——深入解析事件操作(on/off)方法
    `on()` 方法用于在选定元素及其子元素上绑定一个或多个事件处理程序。从 jQuery 1.7 版本开始,`on()` 方法取代了 `bind()`、`delegate()` 和 `live()` 方法,成为统一的事件绑定方式。该方法不仅支持直接绑定事件,还支持事件委托,使得事件处理更加灵活和高效。通过 `off()` 方法,可以移除之前使用 `on()` 绑定的事件处理程序,从而实现对事件的动态管理。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • HTML 页面中调用 JavaScript 函数生成随机数值并自动展示
    在HTML页面中,通过调用JavaScript函数生成随机数值,并将其自动展示在页面上。具体实现包括构建HTML页面结构,定义JavaScript函数以生成随机数,以及在页面加载时自动调用该函数并将结果呈现给用户。 ... [详细]
  • 优化后的标题:利用 jQuery 实现高效树形结构元素选择与操作
    在Web前端开发中,DOM结构本质上是一种树形结构。通过优化后的jQuery选择器,可以高效地选择和操作DOM树中的节点。这些选择器不仅简化了代码编写,还提高了性能和可维护性。本文将详细介绍如何利用jQuery的树形选择器实现高效的元素选择与操作。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 在使用Block时,正确的声明方法和确保线程安全是至关重要的。为了保证Block在堆中分配,应使用`copy`修饰符进行声明,因为栈中的Block与栈的生命周期绑定,容易导致内存问题。此外,还需注意Block捕获外部变量的行为,以避免潜在的循环引用和数据不一致问题。建议深入研究相关文档,以掌握更多高级技巧和最佳实践。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • 《精通 jQuery》第六章:深入解析与实战应用
    《精通 jQuery》第六章:深入解析与实战应用本章详细探讨了 Ajax 技术的核心机制及其实际应用。Ajax 通过 XMLHttpRequest 对象实现客户端与服务器之间的异步数据交换,从而在不重新加载整个页面的情况下更新部分内容。这种技术不仅提升了用户体验,还提高了应用的响应速度和效率。此外,本章还介绍了如何利用 jQuery 简化 Ajax 操作,并提供了多个实战案例,帮助读者更好地理解和掌握这一重要技术。 ... [详细]
  • 如何在ES6中实现Promise的完整流程
    在ES6中,Promise是一种用于处理异步操作的数据结构,它代表了一个现在、将来或永远可能可用的结果。本文将详细介绍如何在ES6中实现Promise的完整流程,包括创建、链式调用、错误处理等关键步骤,帮助开发者更好地理解和应用这一重要的异步编程工具。 ... [详细]
author-avatar
刘浩不来丷上海594865126
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有