javascript - 显示图层时如何避免水平 html 滚动

标签 javascript css

我有一个 div .layer 使整个页面变暗以突出显示模态,但是当我触发事件时出现问题,无法占据 100% 的屏幕,并且是滚动条原浏览器的删除

有什么奇特的方法可以使 div .layer 在可见时保持页面的原始条形滚动吗?

在智能手机/平板电脑上拍摄事件 .layer").show(); 但在桌面屏幕上,浏览器的原始滚动条被消除了,并且整个 html 文档向右移动,取而代之。

避免 html 向右移动的正确方法是什么?

提前致谢!

HTML:

<div class="layer"></div>
<div class="open-modal">Open</div>

<div class="modal">
  <div class="close-modal">Close</div>
</div>

CSS:

html {width:100%;min-height:100%;margin:0 auto;top:0;left:0;padding:0}
body {top:0;left:0;margin:0;padding:0;min-height:100%}

.layer {
display:none;
position:fixed;
top:0;
left:0;
width:100%;
min-height:100vh;
background:rgba(0,0,0,.9);
z-index:2
}

.modal {display:none;z-index:1}

脚本:

$(document).ready(function(){
  $(".open-modal").click(function(){
    $(".modal,.layer").show();
    $("body").css("overflow","hidden");
  });
    $(".close-modal,.layer").click(function(){
      $(".close-modal,.layer").hide();
      $("body").css("overflow","");
  });
});

最佳答案

您需要摆脱对“溢出”的使用。我在下面包含了一个指向“溢出”的 Mozilla 开发者网络文档的链接,但下面是一个解释正在发生的事情的快速引用。

“隐藏 如有必要,将裁剪内容以适合填充框。 不提供滚动条,并且不支持允许用户滚动(例如通过拖动或使用滚轮)。可以通过编程方式滚动内容(例如,通过设置 offsetLeft 等属性的值),因此该元素仍然是一个滚动容器。”

https://developer.mozilla.org/en-US/docs/Web/CSS/overflow

另外,在单击“打开”和“关闭”循环一次后,如果您再次单击“打开”,“关闭”一词将不会出现。那是因为您没有使用 .show() 方法在单击“打开”时显示该文本。更新了下面的 JavaScript。

JavaScript:

$(document).ready(function(){
  $(".open-modal").click(function(){
    $(".modal,.layer,.close-modal").show();
  });
    $(".close-modal,.layer").click(function(){
      $(".close-modal,.layer").hide();
  });
});

关于javascript - 显示图层时如何避免水平 html 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58739408/

相关文章:

jquery - jQuery Mobile 1.3.2 中的单击事件未触发

javascript - OnClick 解方程

javascript - 不使用 ID 和 FOR 并使用 angular.js 的自定义复选框/单选按钮

javascript - MongoDB:在一个文档中获取所有集合

javascript - POST请求需要返回html页面

javascript - Selenium htmlUnit 动态内容不起作用

javascript - div 内的 href 打开一个新页面/标签

javascript - 我应该如何从 json 的所有级别(模型、数组)中删除 "id"键

javascript - JQuery 外部链接确认移动兼容性

css - 使用 flexbox 垂直对齐具有不同尺寸图像的内容