移动端ios固定元素在底部,在页面产生滚动时失效?

问题描述

一个contenteditable盒子,和一个普通的div,默认情况下,普通div固定在底部,edtiable盒子focus的时候,软键盘弹出,这个时候普通div固定就固定软键盘上方。

普通盒子设置定位为fixed,bottom为0,在安卓手机上能完美解决,但是ios端,软键盘会遮住div

问题出现的环境背景及自己尝试过哪些方法

针对ios端,监听了visualViewportresizescroll事件,让div的bottom的值等于
visualViewport的height,普通情况下div能固定在软键盘上,但是当edtiable盒子聚焦,页面向上滚动,就失效了。

相关代码


window.visualViewport?.addEventListener('resize', () => {
  const viewport = window.visualViewport
  div.style.bottom = viewport.height + 'px'
})

window.visualViewport?.addEventListener('scroll', () => {
  const viewport = window.visualViewport
  div.style.bottom = viewport.height + 'px'
})

你期待的结果是什么?实际看到的错误信息又是什么?

正常情况
错误情况

阅读 2.8k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题