【发布时间】:2022-04-28 19:22:19
【问题描述】:
我正在尝试通过 CSS scroll-snap-type 和 scroll-snap-align 属性使用滚动捕捉,但无论我做什么,我最终都会使非捕捉元素无法访问。
以下面的例子为例。段落 (<p>) 都可以访问,甚至可以很好地捕捉,但是标题 (<h1>) 变得无法访问,因为当我尝试向上滚动查看它时,我只是被捕捉到它下面的第一段。
html {
scroll-snap-type: y mandatory;
height: 100vh;
overflow: scroll;
}
p {
background: pink;
padding: 3rem 4rem;
scroll-snap-align: start;
}
<h1>THIS IS UNREACHABLE</h1>
<p>1.1</p>
<p>1.2</p>
<p>1.3</p>
<p>1.4</p>
<p>1.5</p>
<p>1.6</p>
<p>2.1</p>
<p>2.2</p>
<p>2.3</p>
<p>2.4</p>
<p>2.5</p>
<p>2.6</p>
<p>3.1</p>
<p>3.2</p>
<p>3.3</p>
<p>3.4</p>
<p>3.5</p>
<p>3.6</p>
我的问题:有没有办法在不使非捕捉元素无法访问的情况下实现 CSS 滚动捕捉?
进一步说明:
您可能会注意到我在<html> 标签上使用了scroll-snap-type,而不是使用容器,这显然更典型。这是因为使用容器会使事情变得更糟,引入多个滚动条并混淆容器或 <body> 是否正在滚动。此外,对于我试图实现的滚动捕捉设计,我需要强制容器本身捕捉到视口的顶部,这只会让我们回到使用<body>,或者,因为那只是不起作用(不知道为什么),<html>。
【问题讨论】:
标签: css scroll-snap