当前位置: 首页 > 知识库问答 >
问题:

如何使嵌套flex子级可滚动

白弘伟
2023-03-14

我在一个高度未知的容器中有一个消息列表(这是一个flex子级),希望使它们可滚动。但是我无法找到flex-grow:1min-height:0和其他flex技巧的适当组合来使它工作--消息列表仍然比其父项大。

当我将overflow-y:auto添加到它的父项时-它可以工作,但是除了消息列表之外,这个父项还包括一些不应该滚动的内容。

下面是我针对这种情况的示例:https://jsfiddle.net/ecbtrn58/2/

<div class="page">
  <div class="messages-section">
    <div class="header">Your messages</div>
    <div class="content">
      <img src="https://http.cat/100" width="70" height="50"/>
      <div class="messages-list">
        <div class="message">Hi.</div>
        <div class="message">Hello.</div>
        <div class="message">Good morning.</div>
        <div class="message">Yo!</div>
      </div>
    </div>
  </div>
</div>

.page {
  background-color: #ddd;
  width: 300px;
  height: 300px;
  .messages-section {
    display: flex;
    flex-direction: column;
    width: 50%;
    height: 100%;
    background-color: #ccc;
    .header {
      background: #bbb;
      padding: 5px;
    }
    .content {
      display: flex;
      flex-direction: column;
      align-items: center;
      padding: 5px;
      .messages-list {
        display: flex;
        flex-direction: column;
        overflow-y: auto;
        
        /* What to add here to make it scrollable? */
        .message {
          height: 50px;
          margin: 10px;
          padding: 10px;
          background: #1dc497;
        }
      }
    }
  }
}

如何使留言列表滚动?

共有1个答案

钱展
2023-03-14

您必须将.contentheight设置为100%并使其可滚动:

null

.page {
  background-color: #ddd;
  width: 300px;
  height: 300px;
}

.page .messages-section {
  display: flex;
  flex-direction: column;
  width: 50%;
  height: 100%;
  background-color: #ccc;
}

.page .messages-section .header {
  background: #bbb;
  padding: 5px;
}

.page .messages-section .content {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 5px;
  height: 100%;
  overflow-x: scroll;
}

.page .messages-section .content .messages-list {
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  /* What to add here to make it scrollable? */
}

.page .messages-section .content .messages-list .message {
  height: 50px;
  margin: 10px;
  padding: 10px;
  background: #1dc497;
}
<div class="page">
  <div class="messages-section">
    <div class="header">Your messages</div>
    <div class="content">
      <img src="https://http.cat/100" width="70" height="50" />
      <div class="messages-list">
        <div class="message">Hi.</div>
        <div class="message">Hello.</div>
        <div class="message">Good morning.</div>
        <div class="message">Yo!</div>
      </div>
    </div>
  </div>
</div>
 类似资料:
  • 问题内容: 我在正确使用flexbox时遇到问题,想澄清一下嵌套父元素和子元素的工作方式。 我知道孩子继承了父母的弹性。但是,如果您需要为孩子的孩子(孩子)抚养孩子,这会被覆盖吗?flexbox的正确用法是什么? 我什么时候都适用于孩子 的 孩子(婴儿)的缘故,或将是覆盖孩子的父母柔性? 问题答案: 一个范围 柔性格式化的内容被限制在一个父/子关系。 这意味着弹性容器始终是父容器,而弹性项目始终是

  • 我有一个名为的类,它有一个狗的列表: 狗类有一个小狗列表: 当我试图创建一个新的人类,它有一只狗,狗又有一只小狗,并且我使用带有spring的Hibernate JPA存储库来保存人类时: 我得到以下错误: 但是,如果我用默认值创建人类,并用人类存储库保存他,它就能工作,并且保存了小狗。 我不明白为什么小狗没有自动保存,我也不想使用一个单独的存储库来保存小狗。当狗定义时,Hibernate不应该自

  • 我在根容器的第二个flex项中有一个嵌套的flex容器的行布局。我希望嵌套的flex容器是其父容器使用高度的100%。 下面是演示这个问题的小提琴:http://jsfidle.net/2zdue/316/ 如果我为嵌套的flex容器设置一个显式的高度,那么一切都正常工作。 如何告诉嵌套容器自动填充其容器的垂直空间?

  • 问题内容: 在下面的函数中,我获得带有属性的textarea对象。 此处,嵌套解构使用和变量。但是变量不起作用。 问题答案: 第一个解构仅创建和变量。如果要创建为变量,则需要再次声明。 您可以在Babel编译器上对其进行测试: 这段代码: 被转移到: 如您所见,未创建变量。

  • 在Firebase Structure Your Data一节中,有一个关于以下示例的讨论,其中聊天消息存储在聊天会话ID下。 如何监听进行任何对话?在上设置将发送包含所有会话的DataSnapshot。如果有大量的记录,那将是不可行的。查找整个快照中的哪个子级实际上被更新是一件很困难的事情。 如果我选择直接将消息存储在下,而每个消息都包含字段以检查其所属位置。通过在上创建,我可以通过为设置值侦听

  • 我想让flex的孩子渲染,使位于的宽度之下,而不是容器的宽度之下。 显然flex子项不能设置为内联块? 有解决这个问题的方法吗? https://codepen.io/joshuajazleung/pen/EbwZmJ

  • 这是我使用的一个引用,它解释了如何使一个div在其滚动条隐藏的情况下可滚动。唯一的区别是我有嵌套的div。检查我的小提琴 HTML: CSS: 像上面,我有一个溢出的水平div和我想隐藏它的滚动条。我必须使其仍然可滚动,因为否则将无法工作。 更新: 我已经读了所有的答案,但我仍然没有解决我的问题,也不知道是什么原因造成的。这是有麻烦的生活。基本上,我试图遵循这几乎完全相同的,但一定有一些原因,我的