100vh屏幕上的CSS网格在点击输入字段时干扰移动的设备上的布局虚拟键盘打开

mxg2im7a  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(127)

我正在设计一个Web应用程序,它只需要100%的屏幕就意味着不需要滚动,这就是为什么我使用100vh。它在桌面上工作正常,但当我点击手机和平板电脑上的输入字段时,键盘打开,布局受到影响Click how its working .任何人都可以帮助我,我如何使用CSS或JS处理这种情况,这样布局也是正确的,也可以在键盘上打字。。提前感谢。
这里有一个链接click here,可以知道发生了什么。
我尝试的方法是,当输入字段处于活动状态时,正在压缩的屏幕大小将为特定设备增加250px的高度。

const documentHeight = () => {
         const doc = document.documentElement;
         const platforms = ["Android", "Linux", "arm"];
         const isAndroid = new RegExp(platforms.join("|")).test(
            window.navigator.userAgent
         );

         if (!isAndroid)
            document.addEventListener("touchmove", function (event) {
               event.preventDefault();
            });

         if (window.innerHeight < 667 && isAndroid) height = 250;
         else height = 0;

         doc.style.setProperty(
            "--doc-height",
            `${window.innerHeight + height}px`
         );
      };

      window.addEventListener("resize", documentHeight);
      let htmlTag = document.getElementsByTagName("html");
      let root = document.getElementById("root");
    {
         if (width <= 768) {
            documentHeight();
            htmlTag[0].style.position = "fixed";
            htmlTag[0].style.overflow = "hidden";
            htmlTag[0].style.width = "100vw";
         }
      } else {
         const doc = document.documentElement;
         doc.style.removeProperty("--doc-height");
      }
   });
kxxlusnw

kxxlusnw1#

你的布局也完全重叠,如果打开这个网站在移动的上的横向模式。你试图适应一个小空间的信息很多。
依我看,有两种可能。
第一步是通过你的愿望,以100vh的速度完成所有的事情。几乎所有的页面都不仅仅是100vh。如果你这样做,你的页面看起来不会更糟。
第二种方法是隐藏移动的上的关于、主要和页脚的内容,如果你点击它们中的每一个,它们都会翻转内容。

#EDIT:可能是您的愿望:

首先检查媒体查询(最好的选择,因为用户代理检测不适合现代网站)你也可以观看here并添加其他东西来检测移动的。
然后添加一个eventletener到输入,如果它们是活动的=〉添加一些空格。

const media = window.matchMedia("(max-width: 600px)");
if (media.matches) {
  const container_fluid = document.querySelector(".container-fluid");
  const inputs = document.querySelectorAll("input");

  inputs.forEach((input) => {
    input.addEventListener("focus", () => {
      container_fluid.setAttribute(
        "style",
        "height:" + (window.innerHeight + 100) + "px;"
      );
    });
    input.addEventListener("blur", () => {
      container_fluid.setAttribute("style", "height: 100vh;");
    });
  });
}

希望我能帮上忙

相关问题