【问题标题】:How do I overflow-y: scroll in the child of an overflow-x: scroll如何溢出-y:滚动溢出-x的子级:滚动
【发布时间】:2017-03-02 10:11:47
【问题描述】:

我有以下标记和 css:

https://jsfiddle.net/f0u9kpkb/

关键部分是:

.grid {
  border: 1px solid #bdbdbd;
  display: flex;
  flex: 1;
  flex-direction: column;
  overflow-x: auto;
  height: 200px;
}

.grid .grid-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  overflow-x: visible;
  overflow-y: auto;
}

我希望我的代码在外部 div 上产生一个水平滚动条,在内部 div 上产生一个垂直滚动条(溢出时),但在示例中我得到 2 个水平滚动条(尽管设置了 overflow-x: 在内滚动条)

有没有办法达到我想要的效果

【问题讨论】:

  • 不确定我是否理解得很好jsfiddle.net/14t2cdpr/1
  • react-data-grid 使用 javascript 解决此问题 - 也许这是唯一的方法。
  • 我能找到的唯一解决方案是滚动正文,然后使用 onscroll 事件将标题保持在同一位置

标签: html css flexbox overflow


【解决方案1】:

请查看 w3schools.com 上的 overflow property

我可以看到这里有几个问题。首先是您可能需要在表格中添加更多行以使其更长,以便它实际滚动(它没有在我的显示器上)。

第二个是您为 .grid 类定义了两次 overflow 属性。

曾经在这里:

.grid {
  border: 1px solid #bdbdbd;
  display: flex;
  flex: 1;
  flex-direction: column;
  overflow-x: auto;
  height: 200px;
}

但是你有这个类:

.grid .grid-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  overflow-x: visible;
  overflow-y: auto;
}

这不仅会更改 .grid-body 类的属性,还会更改 .grid 类的属性

我从这个类中删除了溢出属性,并为 .grid-body 类添加了另一种样式,因此它不会覆盖 .grid 类属性。

.grid-body {
  overflow-x: hidden;
  overflow-y: visible;
}

我还在您的表格中添加了更多行。这实现了您要求的内部 div 上的垂直滚动和外部 div 上的水平 div 的行为。 See my JSFiddle.

您可能想玩弄它的外观。我建议将外部 div 溢出设置为 overflow: auto,将内部 div 溢出设置为 overflow: visible,就像我在 this JSFiddle 中所做的那样。

【讨论】:

  • 感谢您的回答 - 不幸的是,内部 div (.grid-body) 剪辑在父宽度的边缘,而不是在溢出区域(可以滚动到视图中)呈现。跨度>
  • 我更新了我的答案。我只是向您展示如何让 div 以您要求的方式运行(内部 div 上的垂直滚动条和外部 div 上的水平滚动条)。您应该能够根据自己的设计偏好调整它们。
  • 嗨 Trapline,感谢您的帮助,当前的 jsfiddle 会滚动标题和内容,它将标题保持在我发现特别困难的地方
【解决方案2】:

您需要将right:0 CSS 添加到.grid .grid-body

添加了一个新类.fix-position{ top:auto; position:fixed; }

请查看我的JsFiddle

如果有任何问题,请告诉我。

【讨论】:

  • 感谢vatsal的回答,即使垂直滚动,我也需要将标题保持在顶部(但它们应该水平滚动)
猜你喜欢
  • 2019-08-04
  • 2011-07-09
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
相关资源
最近更新 更多