1. 保存图片到手机
- 核心步骤:
- 使用
wxml-to-canvas或renderToCanvas将 WXML 渲染为 Canvas。 - 通过
canvasToTempFilePath将 Canvas 转换为临时文件路径。 - 调用
saveImageToPhotosAlbum将图片保存到手机相册。
- 使用
2. 滑动穿透问题
- 解决方案:
- 在页面根节点设置
overflow: hidden或overflow: visible。 - 使用
catchtouchmove阻止事件冒泡。 - 在 Vue 中,可通过
@touchmove.prevent阻止默认行为。
- 在页面根节点设置
3. 聚焦时键盘遮挡输入框(真机问题)
- 问题描述:在真机环境中,键盘弹出时可能遮挡输入框。
- 解决方案:使用
input组件的cursor-spacing属性,指定光标与键盘的距离。
4. 原生组件的限制
- 问题背景:原生组件脱离 WebView 渲染流,导致功能受限。
- 具体限制:
- Input 组件:
- 不支持
type="file",无法实现文件上传。 - 不支持
type="password"时的输入框清除功能。 - 不支持
type="number"时的数字输入限制(如最大最小值、步长等)。 - 不支持
type="date"时的日期选择器样式。
- 不支持
- Textarea 组件:
blur事件会晚于页面上的tap事件。
- 层级问题:
- 原生组件层级始终最高,其他组件无法通过
z-index覆盖。
- 原生组件层级始终最高,其他组件无法通过
- Input 组件:
- 注意事项:
- 微信开发者工具中,原生组件由 Web 组件模拟,可能与真机表现不一致,建议在真机调试。
5. 安全距离适配
- 问题背景:全面屏设备底部存在安全区域,需适配。
- 解决方案:
padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */ padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS ≥ 11.2 */
6. 自定义 TabBar
- 实现步骤:
- 在全局配置文件(
app.config.js/app.json/app.jsx)中配置:tabBar: { "custom": true } - 保留 TabBar 的原生特性,支持
switchTab和onTabItemTap等 API。
- 在全局配置文件(
7. 节点操作
- 问题背景:小程序不支持
document.getElementById。 - 解决方案:
- 使用
wx.createSelectorQuery()创建选择器。 - 通过
select('#node-id')方法获取节点。
- 使用
8. WebView 组件
- 问题背景:
web-view组件会自动铺满整个小程序页面。navigationStyle: "custom"自定义导航栏设置无效。
总结
小程序开发中,需特别注意原生组件的限制、真机环境的适配以及安全距离的处理。通过合理使用 API 和 CSS 方案,可以有效解决常见问题,提升用户体验。

2146

被折叠的 条评论
为什么被折叠?



