分析微信小程序开发过程中有可能会遇到的一些小问题

前言

本文章是在最近开发微信小程序的过程中发现的一些问题与优化方案,具有一定的参考意义。

问题一

canvas画布触摸,页面跟随滑动:

ini 复制代码
 <canvas  bindtouchstart="canvasBindtouchstart" bindtouchend="canvasBindtouchend" bindtouchmove="canvasBindtouchmove" /> 

最近开发小程序的时候, 使用到了canvas画布,但是在触摸画布操作图形的过程中发现,手指在画布上移动时,整个页面也会跟随移动,这样就非常影响用户的体验,效果非常不好,而且容易产生误操作。

产生问题的原因

  • bindtouchstart 手指按下画布时
  • bindtouchmove 手指在画布上上移动时
  • bindtouchend 手指离开画布时

这三个方法是官方案例里面使用的,所以当时开发的时候就直接拿来用了,但是这三个方法在页面没有滚动条时,大部分时候是没有问题的,苹果设备除外(因为苹果设备就算页面不能滑动,但是滑动页面的时候,还是可以进行部分的拖动)

这是因为微信小程序的 bind+事件 会导致事件冒泡,那么在画布上移动的时候,页面也会跟随滑动。

解决的方式

微信小程序的 catch+事件 不会导致事件冒泡,使用以下三个函数替换上面的三个方法,解决该问题

arduino 复制代码
  <canvas  catch:touchstart="canvasBindtouchstart" catch:touchend="canvasBindtouchend" catch:touchmove="canvasBindtouchmove" />
  • catch:touchstart 手指按下画布时
  • catch:touchmove 手指在画布上移动时
  • catch:touchend 手指离开画布时

题外话

上面使用这三个方法可以解决页面跟随滑动的问题,但是要注意页面的代码, bind+事件 传递的event参数中,有x、y这个关键字,但是在 catch+事件的event参数中,是没有x、y这两个关键字的,开发的过程中可以使用 clientX、clientY或者pageX、PageY替代x、y这两个关键字

bind+事件的关键字

catch+事件的关键字

个人建议在开发微信小程序的过程中,尽量不要使用bind+事件,而是使用catch+事件

问题二

scroll-view元素在flex布局时的问题

产生问题的原因

最近在页面中使用 scroll-view元素进行页面开发时,将多个子节点放入到该元素中,使其页面进行横向滚动,但是在页面布局的过程中发现,使用flex布局时,子节点的第一个元素并不在scroll-view元素可视角度的第一个位置,具体效果如下:

解决的方式

经过排产,发现产生该问题的原因是因为使用了flex布局中的样式导致的

  • align-content: space-around;
  • justify-content: space-around;

将这两个样式移除以后,发现子节点的第一个布局是正常的

题外话

在使用scroll-view时,建议在css部分中添加box-sizing: border-box;属性,这样页面的布局会简单很多。

问题三

微信小程序安卓与苹果的事件回调频率不一致

产生问题的原因

在最近开发canvas的过程中发现,在手指触摸画布,然后触发事件回调时,苹果设备的回调频率相对安卓设备而言要少很多次,打个比方就是:苹果设备在1秒钟的时间内回调了20次触摸事件,而安卓设备会在1秒钟以内回调40------60次触摸事件。

解决问题的方式

在开发的过程中,首先判断用户的设备信息,然后根据设备的不同,配置不同的参数,从而提升用户的使用体验

结语

下面是我平时开发小程序的本地设置

调试基础库这里,建议更新到高版本,百分比最大的基础库。

各位在前端开发的过程中,遇到的问题与优化方案,欢迎在评论区留言,大家一起探讨。

相关推荐
Charlie_lll1 分钟前
学习Three.js–基于GeoJSON绘制2D矢量地图
前端·three.js
小二·19 分钟前
Python Web 开发进阶实战:AI 原生安全防护 —— 在 Flask + Suricata 中构建智能网络威胁狩猎平台
前端·人工智能·python
葡萄城技术团队25 分钟前
SpreadJS V19.0 新特性解密:设计器容器行列合计,让报表数据汇总更灵活
前端
晚霞的不甘26 分钟前
Flutter for OpenHarmony:从零到一:构建购物APP的骨架与精美UI
前端·javascript·flutter·ui·前端框架·鸿蒙
小二·39 分钟前
Python Web 开发进阶实战:AI 原生硬件接口 —— 在 Flask + MicroPython 中构建边缘智能设备控制平台
前端·人工智能·python
ElasticPDF-新国产PDF编辑器1 小时前
基于 PDF.js 的 PDF 文字编辑解决方案,纯前端 SDK,跨平台、框架无关、Web 原生
前端·javascript·pdf
带带弟弟学爬虫__1 小时前
速通新Baidu Frida检测
前端·javascript·vue.js·python·网络爬虫
好学且牛逼的马1 小时前
ES6 核心语法精讲
前端·ecmascript·es6
GISer_Jing1 小时前
一次编码,七端运行:Taro多端统一架构深度解析与电商实战
前端·aigc·taro
michael_ouyang1 小时前
IM 消息收发流程方案选型
前端·websocket·网络协议·typescript·electron