H5开发app页面,点击输入框或文本域弹出输入面板时,布局会被顶上去的解决办法

学的是android原生的,现在刚实习,公司本意想让新人学习下新技术就把我安排到开发android h5页面去了,虽然之前学过一点h5的知识,但是实际操作起来不如意啊。遇到这个问题时,我不知道怎么做啊,还是度娘吧,整理出了这个解决办法。


<script type="text/javascript">
            //            控制手机输入法弹出时,页面不会被顶起
                var height = document.documentElement.clientHeight || document.body.clientHeight;
                window.onresize = function() {
                    var heightView = document.documentElement.clientHeight || document.body.clientHeight;
                    if(heightView < height) {
                        plus.webview.currentWebview().setStyle({
                            height: height
                        });
                        //修改父页面高度的时候,也要修改子页面的高度  因为子页面距离父页面底部始终是51px  所以这里只需要用父                             页面的高度减去51px,就是子页面的高度
                        plus.webview.getWebviewById('index_aKeyNavigation.html').setStyle({
                            height: (height * 1 - 51)
                        });
                    }
                }
  </script>

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
这个问题可以通过监听键盘弹出事件以及修改输入框的位置来解决。具体的做法如下: 1. 在uniapp中,可以使用`onKeyboardHeightChange`事件来监听键盘弹出事件,该事件在键盘弹出或收起触发。 2. 在事件处理函数中,可以获取到键盘高度,然后根据键盘高度来计算输入框需要向上移动的距离。 3. 修改输入框的位置,可以使用`uni.createSelectorQuery`来获取输入框的位置和大小,然后通过修改`input`元素的`top`样式来移动输入框。 下面是一个示例代码: ```javascript <template> <view> <web-view src="https://example.com"></web-view> <input type="text" ref="input" placeholder="请输入内容"></input> </view> </template> <script> export default { methods: { onKeyboardHeightChange({ height }) { const query = uni.createSelectorQuery().in(this); query.select('input').boundingClientRect((res) => { const top = res.top - height; uni.$emit('input-top-change', top); }).exec(); } }, mounted() { uni.onKeyboardHeightChange(this.onKeyboardHeightChange); uni.$on('input-top-change', (top) => { this.$refs.input.$el.style.top = `${top}px`; }); }, destroyed() { uni.offKeyboardHeightChange(this.onKeyboardHeightChange); uni.$off('input-top-change'); } } </script> ``` 在上面的代码中,我们监听了`onKeyboardHeightChange`事件,并在事件处理函数中使用`uni.createSelectorQuery`来获取输入框的位置和大小。然后通过`uni.$emit`来触发一个自定义事件,将输入框需要移动的距离传递给父组件。父组件监听到该事件后,通过修改`input`元素的样式来移动输入框。 需要注意的是,在移动输入框,需要将其父元素的`position`属性设置为`relative`或`absolute`,否则`top`样式无效。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄小梁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值