【问题标题】:Blank space under menu after scrolling on mobile devices在移动设备上滚动后菜单下的空白区域
【发布时间】:2018-08-08 07:47:39
【问题描述】:

我有位置固定的菜单元素,当您点击/触摸变暗区域时,它就会隐藏起来。问题是,每当您滚动网站时,这个空白区域会在隐藏之前出现在菜单下

有问题的屏幕截图:

我尝试为菜单元素添加更多高度并设置溢出:隐藏以在菜单处于活动状态时禁用滚动,但没有帮助。我也试图搜索这个,但我真的很难用单词提出准确的问题来找到一些相关的答案或提示。

【问题讨论】:

  • 你可以试试height: 100vh; 而不是height: 100%; 吗?
  • @Rabbid76 我试过了,但它什么也没做,因为固定位置是相对于屏幕的,所以 100% 等于 100vh :/

标签: css mobile scroll frontend


【解决方案1】:

我了解了 position: fixed 的实际工作情况,并想出了如何解决我的问题的想法。所以基本上,在触摸设备上,固定位置仅以一种方式工作(例如:如果您设置 top: 0bottom: auto(或 top: 0 bottom: 0),菜单隐藏前底部会有一个空白区域,如果设置 bottom: 0top: auto 会有相反的效果)。所以我想出了创建另一个具有相同背景颜色和相同动画效果的图层,但使用 bottom: 0top: auto 来防止顶部出现这个空白/菜单的底部。所以基本上,是的,它确实解决了我的问题。也许有人面临同样的问题,所以我决定写下这个答案。

【讨论】:

    【解决方案2】:

    感谢@eisbehr 教我如何使用它和一个很好的教训,我删除了我之前的答案。

    body {
      margin: 0;
    }
    .forceHeight {
      position: relative;
      height: 200vh;
      background-color: lightgrey;
    }
    
    .menu {
      position: fixed;
      right: 0;
      top: 0;
      bottom: 0;
      background-color: blue;
    }
    <div class="forceHeight">
      <div class="menu">
        this is your fixed menu
      </div>
      asdf this has a lot of content
    </div>

    【讨论】:

    • 它没有帮助我。实际上这个空白只出现在触摸设备上。在内置的 chrome 设备模拟器上,一切正常。我认为这也与页面顶部和底部边缘的相同行为有关。你知道,就像当页面在边缘并且你滚动整个页面时,整个页面都在移动,并且有相同的空白区域。我希望你明白我在说什么。对不起我的英语:)
    • @menberusch 您能否提供一个可重现的错误示例?
    • 1) i.imgur.com/AXCZU1U.jpg 2) i.imgur.com/odMmeLV.jpg 第二张图片是在页面顶部滚动之后。关于这个我在之前的评论中谈到过
    猜你喜欢
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多