【问题标题】:Flex div does not show overflow scrollbarsFlex div 不显示溢出滚动条
【发布时间】:2018-08-13 06:02:54
【问题描述】:

我有一个简单的 flex 容器,里面有标准的 div。问题是它从不显示溢出滚动条。我希望它垂直滚动。我只是输入更多字词,以便提交这个问题。

#chatBody {
  height: 170px;
  overflow-y: scroll;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 0;
}
<div id="chatBody">
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
  <div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
  </div>
</div>

【问题讨论】:

标签: html css flexbox


【解决方案1】:

#chatBody {
    height: 80px;
    position:relative;
    overflow-y:scroll;
    display: flex;
    min-height: 0;
    flex-direction: column-reverse; /* 'column' for start, 'column-reverse'       for end */
}
<div id="chatBody">
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div><div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
<div class="chat-msg">
    <div class="chat-msg-room"></div>
    <div class="chat-msg-user"></div>
    <div class="chat-msg-text">Disconnected from chat</div>
</div>
</div>

我使用了 flex-direction column-reverse 而不是 justify-content,因为 justify-content 可以防止溢出工作。让我知道这是否有帮助。

【讨论】:

  • 看起来您正在关注this 答案。如果您认为答案是正确的,请通过链接将其标记为重复
  • @ArupRakshit Max 回答了我的问题并解决了问题,它会帮助其他人。我希望 StackOverflow 不是关于标记重复项,而是更多关于解决和回答问题。
  • 你应该用 Firefox 检查,我的(最新 /w7)不允许滚动 :( (column:okay/column-reverse:bug)
  • @jozenbasin 链接的 SO 答案中提到了 max 回答的内容。他将答案作为参考......当我们看到任何问题已经回答时,我们将其链接仅供未来读者使用。如果你花时间看看答案,你就会明白这一点。 Max 从 SO 帖子中得到了答案,甚至没有改变一个字。我不知道为什么他已经在那里付出了这么多努力。
  • @ArupRakshit 你在说什么?我的回答完全没有时间,我已经知道这个问题。我只是想帮助 Jozenbasin
【解决方案2】:

为了避免(not cure)column-reverse导致滚动无效的错误,您应该使用额外的flex(或不)容器来包装它。

一旦您使用了column-reverse,最后一个元素将首先显示在顶部,并且滚动条将在父包装器上需要的地方工作。

要最终在底部可视化地获得最后一个元素,您可以通过scale() 镜像整个容器并再次镜像每个子容器,使其再次可读。

注意:滚动将被反转,向下滚动滚轮将在屏幕上向上滚动......它是镜像的。

下面的演示

#chatBody {
  height: auto;/* reset */
  width: auto;/* reset */
  flex: 1;
  display: flex;
  flex-flow: column-reverse;/* reset preparing instead justify-content flex-end */
  transform: scale(1, 1);/* reset, children 1 after 1 will be set back to readable */
  counter-reset:div;/* demo purpose */
}
.chat-msg:before {
counter-increment:div;
content:counter(div)' - ';
float:left;color:red;
}
div[id] {
  overflow: auto;
  border: solid;
  height: 170px;
  flex-flow: column;
}

div[id],
.chat-msg {
  transform: scale(1, -1);/* visual mirroring */
}

.chat-msg {
  border-top: solid;
}
<div id>
  <div id="chatBody">
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user"></div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
    <div class="chat-msg">
      <div class="chat-msg-room"></div>
      <div class="chat-msg-user">last</div>
      <div class="chat-msg-text">Disconnected from chat</div>
    </div>
  </div>
</div>

如果你不想镜像容器,这个answer uses a javascript所以滚动已经一直到底部了,不需要涉及flex模型。

【讨论】:

  • 谢谢,但 Max 的回答很简单,对我有用
  • @jozenbasin 不客气,我很惊讶,因为他的 sn-p 不能用我的 firefox 滚动?我误解了这个问题吗?编辑:Max的答案确实适用于chrome,而不是FF :(
猜你喜欢
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 2011-11-21
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多