当前位置: 首页 > 知识库问答 >
问题:

javascript - 微信端vue项目软键盘弹起之后页面被压缩的问题?

凌黎明
2024-05-27
// login.vue<input @blur="fixScroll" v-model.trim="form.username" placeholder="请输入用户名">const fixScroll = () => {    window.scrollTo(0, 0)}// app.vueconst el = document.documentElement || document.bodyconst originHeight = el.clientHeight;watch(() => route.path, () => {  const resizeHeight = el.clientHeight  if (resizeHeight < originHeight) {       console.log('执行力scrollTo');       window.scrollTo(0, originHeight)  }})

vue项目在微信端,登录页面输入用户信息后,点击登录进入首页,偶尔页面就变成这个样子了,
image.png
我在网上查找方案都是通过scrollTo去解决,然而我自己使用却发现不行,这种情况还有什么解决方法吗?
image.png

共有1个答案

伊富
2024-05-27

其实被压缩的是窗口高度,页面的文档流会通过滚动条机制来应对所有高度的,文档流就不存在被压缩的问题。
所以你的“被压缩”,如果不是因为你按屏幕高度比写布局的话,那就只有一种可能——不是页面被“压缩”,而是你页面底下的按钮因为“水涨船高”而跑上来了。
“水涨船高”的按钮,通常是通过 position:fixed或者position:sticky “粘”在视口底部的,这样的设计在全尺寸显示的情况下不会有问题,只是软键盘一顶上来就违背初衷了。
那么,如果确实如此的话,解决的方案也就清晰明了了:分全尺寸软键盘两种情形来布局就行了,全尺寸的时候该显示还得显示,顶上来的时候底下的内容就不显示,例如使用 JS :

{  mounted(){    window.addEventListener('resize', () => {      // 触发阈值可以根据窗口的全尺寸高度再加上某个经验值来确定      if(window.innerHeight < xxxxx){        // 假设 buttonWrap 是页面中那些被顶上来的内容的容器        this.$refs.buttonWrap.style.display = "none";      } else {        this.$refs.buttonWrap.style.display = "block"; // "flex"...      }    })  }}

当然如果我猜错原因的话就另请高明吧。

 类似资料:
  • vue项目已经使用UglifyJsPlugin进行打包压缩了,上级要求项目打包之后js文件再小点,还有什么处理办法呢? 希望大佬们能给点建议,如果可以的话,有点代码支持! 拜谢!!!

  • 本文向大家介绍解决Android软键盘弹出覆盖h5页面输入框问题,包括了解决Android软键盘弹出覆盖h5页面输入框问题的使用技巧和注意事项,需要的朋友参考一下 之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家: 系统:Android 条件:当输入框在可视区底部或者偏下的位置 触发条件:输入框获取焦点,弹出软

  • ttf 字体文件已经达到 10M了 ,体积太大了怎么压缩呢,这个项目很多数据是动态的,有什么好的压缩方法吗?

  • template.defaults.minimize art-template 内建的压缩器可以压缩 HTML、JS、CSS,它在编译阶段运行,因此完全不影响渲染速度,并且能够加快网络传输。 开启 template.defaults.minimize = true; 配置 参见:https://github.com/kangax/html-minifier 默认配置 template.defau

  • 列表视图项根据其内容具有随机高度。 单击列表视图项时,我需要关注EditText并打开软键盘,同时我希望被单击的项位于列表视图的顶部,例如,如果单击项2,我希望看到: 为了将单击的项目放在listview的顶部,当单击项目时,我将根据其位置获取单击的项目视图,并调用<code>视图。GetLocationOn Screen(locations)获取其y位置,并使用该y减去actionbar的高度,