html - 即使在设置最小宽度 :0? 之后,Flex 子容器也会溢出父容器

标签 html css flexbox

<分区>

子 flex 元素超出了父容器的宽度。我也尝试设置 min-width:0 但它仍然不起作用。

这是我的 HTML 和 CSS 代码:

.parent{
  display: flex;
  border: 2px solid red;
}

.child1{
  background: cyan;
  height: 40px;
  width: 40px;
  flex-shrink: 0;
}

.child2 {
  background: pink;
  height: 20px;
  width: 20px;
}

.child3 {
  background: yellow;
  height: 20px;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<div class='parent'>
  <div class='child1'>1</div>
  <div>
    <div class='child2'>2</div>
    <div class='child3'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus sagittis odio, ac pulvinar tortor sagittis et. In hac habitasse platea dictumst. Phasellus ut velit dolor. Vestibulum pulvinar orci libero, in aliquet arcu auctor non. Morbi volutpat elit id lacus cursus, at imperdiet tellus eleifend. Morbi euismod vehicula urna, sed pretium felis ullamcorper vitae. Nunc at ligula a odio eleifend convallis eget sed orci. Praesent fermentum, sem in congue tempus, ex diam suscipit neque, in ullamcorper orci erat eu orci.</div>
  </div>
</div>

我的目的是为了防止 child3 溢出父容器并在溢出时显示省略号(...)。

感谢任何帮助。

最佳答案

您发布的内容存在一些问题,但不要担心我们可以解决您的问题。

什么是 flex ,什么不是

首先让我们看看您的标记:

.parent 是一个带有display: flex 的元素。根据您的命名,我们可能会错误地假设它的子项是:

  • .child1,
  • .child2,和
  • .child3.

……但情况不是

.parent 的 child 实际上是:

  • .child1,和
  • 无类 div

无类 div 没有为其设置样式,因此 .child2.child3 未定位在 flexbox 上下文中。因此,.child3 上的 min-width: 0 无法解决您的问题,因为该解决方案仅适用于 flex children。

在正确的上下文中应用min-width

首先,让我们给那个 child div 一个类:.foo

.foo 本身有 block 显示,但目前它允许内容(在 .child3 中)溢出。这是我们要防止溢出的元素:

.foo {
  min-width: 0;
}

这应该就是您所需要的。您似乎已经熟悉我们为什么使用 min-width 来帮助解决这个问题,但以防万一您可以在 CSS Tricks: Flexbox and Truncated Text 中阅读相关内容。 .

解决方案

下面是所有的内容。

.parent {
  display: flex;
  border: 2px solid red;
}

.foo {
  min-width: 0;
  outline: 1px solid rebeccapurple;
}

.child1 {
  background: cyan;
  height: 40px;
  width: 40px;
  flex-shrink: 0;
}

.child2 {
  background: pink;
  height: 20px;
  width: 20px;
}

.child3 {
  background: yellow;
  height: 20px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
<div class='parent'>
  <div class='child1'>1</div>
  <div class="foo">
    <div class='child2'>2</div>
    <div class='child3'>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus sagittis odio, ac pulvinar tortor sagittis et. In hac habitasse platea dictumst. Phasellus ut velit dolor. Vestibulum pulvinar orci libero, in aliquet arcu auctor non. Morbi volutpat elit id lacus cursus, at imperdiet tellus eleifend. Morbi euismod vehicula urna, sed pretium felis ullamcorper vitae. Nunc at ligula a odio eleifend convallis eget sed orci. Praesent fermentum, sem in congue tempus, ex diam suscipit neque, in ullamcorper orci erat eu orci.
    </div>
  </div>
</div>

关于html - 即使在设置最小宽度 :0? 之后,Flex 子容器也会溢出父容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63601481/

相关文章:

html - div背景颜色不覆盖背景图像div的全部高度和宽度

java - JSP 忽略了一些 css

JavaScript 获取当前应用于元素的样式列表

html - <pre> 上的 WebKit 垂直滚动条问题

html - 使用 flexbox 但它在 Google Chrome 上不是并排的

Python Django 多行形式

javascript - Jquery加载部分外部HTML

html - 在 Bootstrap 中移动图像

css - 如何在 inline-flex 元素的一侧创建边距?

html - 在最后一行调整 flex 元素的大小