【问题标题】:Why does overflow:scroll not work in this interface?为什么overflow:scroll 在这个界面不起作用?
【发布时间】:2017-05-03 21:07:34
【问题描述】:

根据 CSS-Tricks (https://css-tricks.com/almanac/properties/o/overflow/) 对这篇文章的建议,我使用 Bootstrap 为 Angular 驱动的应用程序构建了一个两窗格的 UI。这两个窗格旨在相互独立地垂直滚动,并且与整个页面无关。此行为在项目的最新版本中按预期工作,此处为:https://monstermancer.herokuapp.com/(可能需要缩短浏览器窗口才能在不登录的情况下查看窗格滚动)。如果相关,此版本的应用程序使用 SystemJS 和 Angular 2.0.0-rc5。

最近,在我对 Webpack 进行更改后,使用 Angular CLI 并将 Angular 版本更新为 2.2,但在保持所有 HTML 和 LESS 相同的同时,滚动行为不再起作用。在此处的“操作”中查看它:https://monster-mash.herokuapp.com/

我有一个代码笔,它将示例视图与应用程序内部隔离开来,并且关注此处的滚动行为:https://codepen.io/Polisurgist/pen/bBOZzm

该笔的相关 CSS:

body {
    overflow: hidden;
}
.scroll {
    overflow-y: scroll;
    overflow-x: hidden;
    height: 100%;
    padding-bottom: 50px;
}
::-webkit-scrollbar{
    display:none;
}

我的假设是,当我将代码从旧版本移动到新版本时,不知何故我错过了一些关键的 CSS,尽管我无法放置丢失的部分可能是什么。我在这个问题上标记 angularJS 和 webpack 并不是因为我认为其中任何一个确实引起了问题,而是因为某些问题可能已经被引入作为我进行此更新的抵押品。

这里的核心问题是如果有的话,这个界面中的两个窗格没有垂直滚动的原因是什么? https://monster-mash.herokuapp.com/

【问题讨论】:

    标签: jquery css angularjs webpack


    【解决方案1】:

    问题是#content, .row, col-sm8 正在自动调整高度以适应内部内容,因此滚动永远不会出现。

    要解决此问题并获得所需的滚动行为,您需要将所有父元素设为 100%。您可以将其添加到您的 css 中(根据需要将其他 col 类添加到选择器列表中):

    html,
    body,
    .row,
    .col-sm8,
    #content{
      height:100%;
    }
    

    【讨论】:

    • 这真的很有帮助......在我的情况下,我不能完全这样做,但它告诉我从哪里开始解决问题。我仍然很困惑为什么它在一种情况下有效,而在另一种情况下无效。
    • @Daniel 虽然这是解决问题的方法,但它没有解释 CSS 在 monstermancer.herokuapp.com(工作)和 monster-mash.herokuapp.com(损坏)之间发生了哪些变化,在此期间 OP 没有对他的CSS。
    • 所以,问题确实是父元素缩放以适应该内容,尽管在这个答案中设置 CSS 规则是不可行的,因为这些规则与 Bootstrap 交互。似乎可行的是使用height:100vh 而不是100%,因为它根据视口而不是父元素设置滚动容器的高度。不过,我可能错过了为什么这不是一个好主意的原因。
    • 如果您使用的是 vh 单位,请务必检查与您的项目需要支持的浏览器的兼容性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2013-03-10
    • 1970-01-01
    相关资源
    最近更新 更多