【问题标题】:display div above all without scroll首先显示 div 而不滚动
【发布时间】:2021-07-15 02:37:16
【问题描述】:

我正在制作一个画廊,并设法通过单击两个单独的按钮来打开和关闭它。但是,当打开时,我希望它位于所有内容、页面的完整宽度和高度之上,并且无法滚动原始 html(例如,当您在 facebook 上打开图片时)。目前,当我尝试将其定位为绝对或固定时,它只会跳转到页面顶部,我仍然可以滚动浏览 html 的其余部分。

打开的画廊的 html

<div class="container" id="container-one">

        <div class="gallery">
            <img src="1.jpg" style="max-width:100%">
        </div>
      
        <div class="gallery">
            <img src="2.jpeg" style="max-width:100%">
        </div>
    
        <a class="close" onclick="Closed()">&#10006;</a>    
</div>

还有CSS

.container {
    display: none;
    position: absolute;
}

.gallery {
    display: none;
    height: fit-content;
    width: 99vw;
    overflow: hidden;
    background-color: rgba(0, 0, 0, 0.6);
    background-size: 100%;
    z-index: 1300;
    text-align: center;
  }

为了打开和关闭它,我使用 style.display 从 none 更改为 block。

我在网上看了,但只能找到整个画廊的代码,有一百行,我不知道是哪一部分。

【问题讨论】:

  • 可以停止 body 的滚动,也可以让打开的 modal 高度为 100vh ! ....这听起来不错吗?
  • 拿这个js fiddle作为上面提到的例子......我想你会很好地理解它,看看js fiddle
  • 这工作得很好!我现在需要重新定位按钮,但滚动停止并且现在是全屏。谢谢!
  • 我想我没有回答就解决了你的问题!对.... ????

标签: javascript html css


【解决方案1】:

键可能是 CSS 中的 overflow 值。当 overflow 在 body 上为 hidden 时,滚动被禁用。请参阅this questions 了解禁用滚动。

这个 CSS 将把你的元素放在最重要的位置,并且放在整个页面上

.container {
    position: absolute;
    top: 0px;
    left: 0px;
    z-index: 10; /*This must be the highest z-index value of your page to be above all*/
    width: 100%;
    height: 100%;
}

要动态禁用/启用滚动,您可以使用:

function disableScroll() {
    let body = document.querySelector("body")
    body.style.height = "100%" // Make sure the height is fixed
    body.style.overflow = "hidden" // Hide the overflow = disable scrolling
}

function enableScroll() {
    let body = document.querySelector("body")
    body.style.overflow = ""
}

【讨论】:

  • 滚动确实禁用了,但是当我单击按钮打开画廊(位于页面底部的某处)时,它仍然显示在顶部,以及我的首页。我将查看更多的画廊代码,以弄清楚究竟是什么用来像图片滑块一样打开它,但它是否必须像 html 顶部的新窗口一样? (对不起,我对此很陌生,我知道有一种方法可以在一个页面中显示两个 html,但我不确定它是如何工作的,以及它是否是我需要的)
  • 尝试一个巨大的 z-index,以确保问题不是来自这里
  • 这不是问题,它显示在所有的顶部,但在 html 的顶部,而不是在打开按钮所在的底部。我设法通过设置 top: 300vh 将其降低到应有的位置,但我认为一旦我处理网站的响应性,这将是一个问题,因为 div 的高度不固定。
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 2022-01-06
  • 2011-11-07
  • 1970-01-01
相关资源
最近更新 更多