html - Flexbox:如何根据子项中的文本量制作包含 div 的比例?

标签 html css flexbox

我正在开发一个聊天应用程序,想使用 flexbox 来设置聊天消息的样式。但是,当我使用 display: flexflex-direction: row 获取一行中的所有 div 时,消息的文本部分会溢出。如何获得父 div(类 message)的大小以随 message-text div 中的文本量缩放?

.message {
  margin-top: 1%;
  border-top: solid 1px lightgrey;
  padding: 1%;
}

.message-icon {
  width: 60px;
  height: 60px;
  background: red;
  margin-right: 1%;
}

.message-name {
  width: 50px;
}

.message-text {
  width: 100%;
  min-height: 20px;
  padding: 2px;
  border-radius: 2%;
  display: inline-block;
}
<div class='message'>
  <div class='message-icon'></div>
  <div class='message-name'>Steve:</div>
  <div class='message-text'>THIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS
    IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS
    IS A MESSAGETHIS IS A MESSAGE</div>
</div>

最佳答案

你在容器 .message 上使用 flex,每个第一层的 child 都在那里 flex .message-*

如果您不熟悉 flex ,我强烈建议您阅读 this

.message {
  margin-top: 1%;
  border: solid 1px lightgrey;
  padding: 1%;
  display: flex; /* added */
  flex-direction: row; /* added */
}

.message-icon {
  width: 60px;
  height: 60px;
  background: red;
  margin-right: 1%;
}

.message-name {
  width: 50px;
}

.message-text {
  width: 100%;
  min-height: 20px;
  padding: 2px;
  border-radius: 2%;
  display: inline-block; /* you dont need this, since its flexing anyways */
}
<div class='message'>
  <div class='message-icon'></div>
  <div class='message-name'>Steve:</div>
  <div class='message-text'>THIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS
    IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS IS A MESSAGETHIS
    IS A MESSAGETHIS IS A MESSAGE</div>
</div>

关于html - Flexbox:如何根据子项中的文本量制作包含 div 的比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51460679/

相关文章:

html - 如何将图像放在另一个图像之上

css - 使用 flex 在图像上垂直对齐文本?

javascript - 在响应式布局上动态保持 2 个 div 的高度相同

javascript - 不会停止在音频的嵌入元素上在本地主机上下载音乐

javascript - 从 Google 获取搜索 Url 参数到个人网站?

html - 根据父级的宽度,让 n 个子级具有相等的宽度

CSS 3 列,为什么第三列接管了其他 2 列?

python - Eclipse 中的 HTML/CSS/JS 语法高亮显示

html - Flexbox 有一些布局问题

html - 将 flex 元素定位到最后一行或特定行