CSS 属性 scroll-snap-type 防止点击 Firefox

Posted

技术标签:

【中文标题】CSS 属性 scroll-snap-type 防止点击 Firefox【英文标题】:CSS property scroll-snap-type prevent click with Firefox 【发布时间】:2022-01-11 06:18:05 【问题描述】:

我的页面有一些高度为 100vh 且页脚较小的部分:

<!DOCTYPE html>
<html>
  <head>
    <title>Scroll Snap Y</title>
    <style>
      body 
        margin: 0;
        font-family: sans-serif;
        font-size: 40px;
      
      main 
        scroll-snap-type: y mandatory;
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        overflow: scroll;

        /* For old browsers */
        -webkit-scroll-snap-type: y mandatory;
        -ms-scroll-snap-type: y mandatory;
        scroll-snap-type-y: mandatory;
        scroll-snap-points-y: repeat(100%);
      
      section,
      footer 
        display: grid;
        align-items: center;
        justify-content: center;
        scroll-snap-align: start;
      
      section 
        height: 100vh;
      
      section:nth-child(1) 
        background-color: #f00;
      
      section:nth-child(2) 
        background-color: #0f0;
      
      footer 
        background-color: #0ff;
        height: 25vh;
      
    </style>
  </head>
  <body>
    <main>
      <section>1</section>
      <section>2</section>
      <footer>
        <a href="https://***.com/" target="_blank">Stack Overflow</a>
      </footer>
    </main>
  </body>
</html>

它在 Chrome 和 Safari 中非常完美,我滚动到页脚并按预期点击链接:

Video screen capture in Chrome

但是在 Firefox 中,当我点击页脚的任意位置时,页面滚动到上一个部分(图片上的绿色部分),因此我无法点击页脚中的链接,这是不可能的,因为页面滚动系统地转到上一节:

Video screen capture in Chrome

如果页脚的高度为 100vh,则页面在 Firefox 中的行为很好,但我想要一个小的页脚,我不想要一个高度为 100vh 的页脚。

您有什么想法可以让我点击页脚中的链接吗?

【问题讨论】:

【参考方案1】:

我通过为页脚设置scroll-snap-align: end; 修复了这个 Firefox 的错误。

【讨论】:

以上是关于CSS 属性 scroll-snap-type 防止点击 Firefox的主要内容,如果未能解决你的问题,请参考以下文章

web前端入门到实战:CSS 滚动捕捉技术(Scroll Snapping)

web前端入门到实战:CSS 滚动捕捉技术(Scroll Snapping)

使用 sroll-snap-type 优化滚动

scroll-snap-type 实现上拉加载

使用 scroll-snap-type 和 -align 没有滚动捕捉 / 简单示例无法正常工作 Chrome/Firefox /

有啥方法可以禁用 CSS 滚动捕捉点?