微信小程序底部小白条 顶栏处理 输入法弹出处理

news/2024/11/13 5:53:43/

前言

早期由于一直都是在给公司开发,所以自然会选择一个 UI组件库 来进行辅助开发,其中包含 Navbar 组件以及底部菜单组件,因此这些活大多都给组件库给做完了

Navbar(顶栏 / 导航栏

这里由两部分组成
在这里插入图片描述

let res = wx.getMenuButtonBoundingClientRect()
res.top // 对应 一
res.height // 对应 二

可以考虑将其缓存 🤔

小白条

安卓端没有这个问题,需要处理的只有IOS全面屏机型,即 >= iPhone X
所以可以在构建页面时先对机型进行判断

let res = wx.getSystemInfoSync()
let isAppleAndHasLine = false
if (res.model.toLowerCase().includes("ip")) {const regex = /\d+/g;const matches = res.model.match(regex);if (matches && matches.length > 0) {isAppleAndHasLine = matches[0] > 8} else {isAppleAndHasLine = res.model.toLowerCase().includes('x')}
}

页面中的三元是这样的

:style="{paddingBottom: config.isAppleAndHasLine? 'env(safe-area-inset-bottom)' : '0'}"

输入法弹出导致页面上移的问题

典型的案例是聊天页,往往输入框部分都会给高度然后在使用 fixed 固定在底部,或者外层使用 flex 进行布局,内容区自适应

未弹出时

在这里插入图片描述
该状态下底部外边距为 env(safe-area-inset-bottom)

输入法弹出

在这里插入图片描述
弹出时需要拿到键盘的高度,通过其修改页面的高度以及 fixed 在底部的输入框的 bottom 值

domRect(tag) {let query = wx.createSelectorQuery()return new Promise(resolve => {query.select(tag).boundingClientRect((rect) => {resolve(rect)}).exec()})
}
页面加载时
let res = await this.domRect('.say-container')
this.config.contentH = res.top // 页面的高度
this.config.whiteLineH = this.config.windowH - res.bottom // 计算未弹出输入框时输入框距离底部的距离,即小白条的实际高度
输入框 Focus / Blur
<input :adjust-position="false" v-model="text" @focus="inputFocus" @blur="inputBlur"/>inputFocus(e) {this.config.inputBottom = e.detail.height
},
inputBlur(e) {this.config.inputBottom = 0;
},
// 需要处理小白条(输入框和页面底部存在间隙,其中 20 为css中写的 margin 值
<view class="chat-container":style="{height: (config.inputBottom == 0 ? (config.contentH - config.inputBottom) : (config.contentH - config.inputBottom + config.whiteLineH - 20)) + 'px'}"> // 页面高度<view class="say-container":style="{marginBottom: config.isAppleAndHasLine && config.inputBottom == 0 ? 'env(safe-area-inset-bottom)' : '40rpx', bottom: config.inputBottom + 'px'}"> // 输入框// Or
<view class="chat-container":style="{height: (config.contentH - config.inputBottom) + 'px'}"> // 页面高度<view class="say-container":style="{bottom: config.inputBottom + 'px'}"> // 输入框

http://www.ppmy.cn/news/698404.html

相关文章

微信8.0大更新,6大新功能加入!未来还将引入自己的输入法!

微信公开课在1月19日举行&#xff0c;据微信创始人张小龙介绍&#xff0c;每天有大概7.8亿人进入朋友圈&#xff0c;1.2亿人发表朋友圈。 据张小龙在公开课上表示在过几天即将发布的微信新版本&#xff0c;微信将发布一些实验性的&#xff0c;好玩的小功能。 就在今天微信就发布…

到底是微信窃取隐私,还是输入法光明正大收集用户信息?

作者 | Carol 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 在2021年1月的微信公开课上&#xff0c;微信创始人张小龙曾针对微信的用户隐私问题做出了回应。 张小龙表示&#xff0c;过去接到过不少用户的反馈称“在微信上聊什么电商平台就推什么”&#xff0c;…

uniapp 微信小程序表单input输入框,点击下面的输入框时输入法弹出会把输入框内容顶上去

项目场景&#xff1a; 原因分析&#xff1a; 当前页面设置了高度&#xff0c;以及滚动轴&#xff0c;输入法弹出时并没有把页面内容往上定&#xff0c;只顶了输入框内容 解决方案&#xff1a; 不要设置死高度&#xff0c;内容自适应&#xff0c;输入法弹出时让他自己往上顶整…

体积 524MB,无广告!微信输入法来了

点关注公众号&#xff0c;回复“1024”获取2TB学习资源&#xff01; 2021年初&#xff0c;“微信之父”张小龙就披露&#xff0c;微信即将有自己的输入法&#xff0c;但目的不是抢夺这个市场&#xff0c;而是保护用户隐私&#xff0c;很快就会进行灰度测试。 目前&#xff0c;微…

双系统安装Ubuntu配置ROS,Qt,OpenCV,并安装搜狗输入法与微信。

1.检查自己电脑的磁盘格式并设置BIOS 电脑的磁盘格式分为MBR和GPT&#xff0c;根据查看磁盘格式_哔哩哔哩_bilibili查询自己的磁盘信息。随后根据自己硬盘的不同格式&#xff0c;GPT分区安装Ubuntu_哔哩哔哩_bilibili设置自己电脑的BIOS中secure boot选项&#xff0c;将secure …

【已解决】mac电脑终于卸载掉了这个“微信键盘”输入法

有一天我被微信的输入法广告吸引了&#xff0c;导致我下载安装了微信键盘&#xff0c;在使用一段时间后&#xff0c;感觉这个输入法就是个翔&#xff0c;害我花不少时间翻页找字&#xff0c;降低了我的效率&#xff0c; 所以我决定卸载它&#xff0c;干掉它~ but&#xff0c;…

微信键盘好用吗?

相信大家在手机上已经安装了一款自己比较熟练使用地输入法&#xff0c;最近微信推出了微信键盘&#xff0c;作为一名产品经理&#xff0c;当然不能错过试用它&#xff0c;我在第一时间下载进行了使用&#xff0c; 下面是我使用了几天的感受&#xff0c;与大家分享一下。 一、体…

重磅:微信内置输入法来了!

点击⬆️方“逆锋起笔”&#xff0c;公众号回复 编程资源领取大佬们推荐的学习资料在2021年的微信公开课 Pro 上&#xff0c;腾讯高级副总裁张小龙在演讲中&#xff0c;提到和用户隐私有关的话题时&#xff0c;声称微信将要推出自己的输入法。 历时将近三个月&#xff0c;微信输…