局部固定粘性?

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

让我在这里稍微设置一下场景。

您有一个网站,并且像大多数网站一样,它可以滚动。

此网站将包含模态框。您可能会将模态框的 position 设置为 fixed,以便无论滚动如何,它都处于可预测的位置。模态框本身也可能滚动。

请注意,模态框有一个关闭按钮。我们可以将其 position 设置为 absolute,使其位于右上角,但如果我们的模态框滚动,就会出现问题。

我们丢失了滚动背后的关闭按钮。

应该使用更多 position: fixed 来解决,对吧?遗憾的是,事实并非如此,因为 position: fixed 没有局部上下文。

好吧……实际上 确实有点(奇怪地)存在。如果模态框有任何 CSS 变换(如果您使用旧的 left: 50%; transform: translateX(-50%); 技巧将其居中,则可能已经存在),则固定位置的关闭按钮将回到原位。

但是……由于变换帮助将关闭按钮拉回原位,您可以看到它的行为类似于 position: absolute 而不是 position: fixed。¯\_(ツ)_/¯

不过,这里有一个可能性。这个想法是 position: sticky 从某种意义上说,是一个局部作用域的 position: fixed。如果我们无论如何都将关闭按钮定位在 top: 0 处,它就会随着模态框向下滚动而粘在那里。

我只是认为这是一个有趣的可能性。老实说,如果我有一些我担心滚动的模态框,我可能会使用 .modal-header 容器和 .modal-content 容器。标题将始终位于顶部,而容器将是可滚动的内容。