html - Flexbox 子元素在未到达父元素边缘时展开父元素

标签 html css flexbox

我正在用 flexbox 制作聊天气泡,容器中有三个子元素(avatarcontentmeta ).


我所期望的。

avatarcontent 元素共享同一行,meta 元素拥有一行。

enter image description here

容器应适合内容。

enter image description here


实际发生了什么。

容器会根据 meta 元素的文本宽度展开,即使文本尚未到达容器的边缘也是如此。

enter image description here


演示

这是代码。是否有可能防止容器在 meta 元素的文本没有到达容器的边缘? (不添加任何包装器或更改 flex-direction)

.chat {
  display       : flex;
  flex-wrap     : wrap;
  flex-direction: row;
  width         : max-content;
  background    : black;
}

.chat .avatar {
  width     : 32px;
  height    : 32px;
  background: blue;
}

.chat .content {
  height    : 32px;
  background: yellow;
}

.chat .meta {
  width     : 100%;
  background: red;
}
<div class="chat">
  <div class="avatar"></div>
  <div class="content">
    This is a chat.
  </div>
  <div class="meta">
    10:31 AM
  </div>
</div>

最佳答案

不给 flexbox 元素分配 width,而是使用 flexflex-basis .

.chat {
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  width: max-content;
  background: black;
}

.chat .avatar {
  flex: 0 0 32px;
  height: 32px;
  background: blue;
}

.chat .content {
  flex: 1 0 auto;
  height: 32px;
  background: yellow;
}

.chat .meta {
  flex: 0 0 100%;
  background: red;
}
<div class="chat">
  <div class="avatar"></div>
  <div class="content">
    This is a chat.
  </div>
  <div class="meta">
    10:31 AM
  </div>
</div>

关于html - Flexbox 子元素在未到达父元素边缘时展开父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305880/

相关文章:

javascript - 如何剪辑背景图像并使用动画移动它?

javascript - 为什么图片预加载无效?

javascript - 使用 flex 布局,页脚不会完全下降到底部

css - 如何指定要在 css flexbox 中包装的元素?

java - 使用 Jsoup 解析 html 元素

javascript - 使用 canvas 和 javascript 的嵌套动画

css - HTML 中的 hr 中断 div :first-child?

html - 如何通过使用相同的填充将内容保留在图像上来保持图像的纵横比

angularjs - 使用带有智能表格 Angular 的固定标题使表格 100%

javascript - 如何围绕图像中心旋转跨度?