sco*_*ord 27 css jquery viewport ios
我一直试图让这项工作好几天,没有运气,所以我想我会分享信息,也许有人想出一个解决方案.
我想在软键盘启动时获得确切的视口大小.我目前在标题上使用以下代码,以便网站响应:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
Run Code Online (Sandbox Code Playgroud)
我意识到当软键盘出现时,它使用设备高度作为视口高度并向上推动站点的其余部分 - 这使我认为它从width = device-width选项获得它的高度.
启动软键盘后使用以下代码:
setTimeout(function() {
viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', 'height=auto');
}, 300)
Run Code Online (Sandbox Code Playgroud)
然后使用jquery获取高度在Android上显示CORRECT结果 - 也就是可见的视口大小,没有虚拟键盘,但在iOS上没有.我得到一个随机数,我假设源于其余的元标记不存在,所以我得到了网站的放大版本以及75或100之类的数字(在iphone 4s上)
我也尝试在键盘上升后创建一个固定元素,使其使用top:0的视口高度; 和底部:0; 属性,但我仍然得到原始的高度.
更接近这一点的是将视口元标记高度设置为固定值,可以通过jquery获取$(window).height(),这意味着元标记在启动键盘后实际上有所不同,但是对于固定的没有真正的价值高度.
我已经看到很多关于此的主题,但没有一个解决方案.有解决方案吗?
Iva*_*ele 16
现在您可以将window resize侦听器与window.visualViewport.height属性结合起来(具有非常好的兼容性):
window.addEventListener('resize', () => {
// For the rare legacy browsers that don't support it
if (!window.visualViewport) {
return
}
console.log(window.visualViewport.height)
})
Run Code Online (Sandbox Code Playgroud)
小智 11
2022 年的新功能。在 Chrome 和 Firefox 上运行良好:
将“ interactive-widget=resizes-content”添加到元标记视口
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content">
Run Code Online (Sandbox Code Playgroud)
确实适合我的目的
在视图中,我想在虚拟键盘打开后获取剩余屏幕的高度,我使用了一个绝对溢出的元素,使用屏幕高度覆盖整个屏幕,整个页面的内容都在其中.结果,虚拟键盘在溢出元素的TOP上打开,而不改变其尺寸.
为了解决这个具体的问题,我只需要将这个元素的位置改为静态,并在打开虚拟键盘时删除溢出 - 实际上,当发出虚拟键盘时(默认情况下将元素更改为静态位置),ios会更改为此行为.这就是固定元素变为静态的原因.
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
41761 次 |
| 最近记录: |