如何确定屏幕上哪个元素具有滚动优先级



当我尝试在一个范围中使用多个滚动条时,会发生一些奇怪的事情。让我澄清一下,在我的代码中,pageContainer的id与"同义;滚动字段";,contentWrap的id与";子滚动字段";在我下面的解释中。

让我也澄清一下,有两个问题:

  • 第一个是具有滚动功能。Firefox是唯一一个遇到这个问题的浏览器,我在相应的章节中对此进行了描述。它只能在Firefox中测试
  • 第二个是我想如何在滚动中添加自定义属性。这目前在Chrome中是可测试的,在我发现Firefox的第一个问题后,它也将在Firefox中进行测试

问题一(适用于PC上的FIREFOX(:

--当您在滚动字段(子滚动字段(中的滚动字段中滚动时,必须首先移动鼠标,以便客户端知道您打算在子滚动字段中进行滚动;否则,它将假设,不管鼠标如何悬停在子滚动字段上,您都打算在主滚动字段中滚动。换言之,我希望你悬停在哪个滚动字段上都是滚动的。

--测试:一直滚动到代码段的底部,然后一直滚动到顶部在开始定位鼠标后,不要移动鼠标这将揭示问题——子滚动字段没有滚动,即使鼠标悬停在其分区上也是如此。

一旦Firefox的问题得到解决,它将出现Chrome遇到的问题:

第二期(适用于PC上的CHROME或MAC上的浏览器(:

--当你在滚动字段(子滚动字段(中的滚动字段中滚动时,它会按预期工作,但我希望这样做,如果你在页脚处,并将鼠标悬停在子滚动字段上,你会从页脚向上滚动,然后在子字段中向上滚动。换句话说,如果向上滚动时光标位于子滚动字段上,我不希望页脚停留在页面底部。

--测试:滚动到滚动片段的底部,同时将光标保持在屏幕中间,然后向上滚动;您将看到子滚动字段首先向上滚动(将页脚保持在底部(,然后滚动字段向上滚动。我如何使相反的情况发生?

这是我的网站的伪代码:

body {
overflow-y: hidden;
}
#pageContainer {
overflow-y: scroll;
height: 100vh;
scroll-snap-type: y mandatory;
}
.snapPoint {
position: relative;
scroll-snap-align: start none;
}
#prelude {
height: 100vh;
overflow: hidden;
background-color: #000020;
}
#header {
width: 100vw;
height: 9.75vh;
z-index: 3;
background: linear-gradient(to top, #167988 0%, #1590A3 20%, #1DB3CA 100%);
overflow: hidden;
}
#contentWrap {
overflow-y: scroll;
font-size: 4vw;
padding: 5vh 0 0;
height: 85.25vh;
text-align: center;
background: linear-gradient(#C3C3C3 0%, #F4F4F4 12vh, #F4F4F4 calc(100% - 15vh), #C3C3C3 100%);
}
#footer {
background: linear-gradient(to top, #167988 0%, #1590A3 20%, #1DB3CA 100%);
height: 10vw;
width: 100vw;
z-index: 3;
overflow: hidden;
}
<body>
<div id="pageContainer"><!--THIS CONTAINS THE MAIN SCROLL SCOPE (WITH SNAP)-->
<div id="prelude" class="snapPoint"><h1 style = "color: #F4F4F4;">PRELUDE</h1></div>
<div id="header" class="snapPoint"></div>
<div id="contentWrap"><!--THIS CONTAINS THE SUB-SCROLL SCOPE-->
<p>Test One<br/><br/><br/>Test Two<br/><br/><br/>Test Three<br/><br/><br/>Test Four</p>
</div>
<div id="footer" class="snapPoint"></div>
</div>
</body>

我应该如何处理这个问题?我可以写JavaScript来解决这个问题吗?或者有没有我没有考虑的CSS技术?

如果我正确理解你的问题,请尝试在contentWrapdiv上添加overscroll-behavior: none

最新更新