css - Flex box 需要宽度才能适当调整大小

标签 css flexbox width

<分区>

对具有三个框的主菜单使用 flex。第一个和第三个不 flex ,第二个增长以填充。第二个盒子是一个嵌套的 flex,它有两个盒子,第一个不 flex ,第二个增长以填充。嵌套的 flex,第二个框配置为使用省略号进行溢出,但这没有用。盒子扩展并插入嵌套的 flex,而不是父 flex,超出父最大宽度。然后发现第二个框是否有定义的宽度,任何值,甚至 1px,它都按预期工作。关心和好奇为什么会这样,如果我做错了什么。

Codepin 实际操作:https://codepen.io/nws-jholmberg/pen/mdyEyWq

<div class="menu-container">
  <div class="menu">
    <div class="menu-item-1 menu-item">X</div>
    <div class="menu-item-2 menu-item">
      <div class="menu-search">
        <div class="menu-item-search-1">X</div>
        <div class="menu-item-search-2">The search result goes here and does not fit</div>
      </div>
    </div>
    <div class="menu-item-3 menu-item">X</div>
  </div>
</div>
<br>
<div class="menu-container">
  <div class="menu">
    <div class="menu-item-1 menu-item">X</div>
    <div class="menu-item-2 menu-item">
      <div class="menu-search">
        <div class="menu-item-search-1">X</div>
        <div class="menu-item-search-2 add-width">The search result goes here and does not fit</div>
      </div>
    </div>
    <div class="menu-item-3 menu-item">X</div>
  </div>
</div>
.menu-container {
  background-color: #f00;
  max-width: 200px;
}

.menu {
  display: flex;
}

.menu-item {
  margin: 4px;
}

.menu-item-1 {
  flex: none;
}

.menu-item-2 {
  flex: 1;
  background-color: #0ff;
}

.menu-item-3 {
  flex: none;
}

.menu-search {
  display: flex;
}

.menu-item-search-1 {
  flex: none;
  background-color: #3A3;
  color: #fff;
}

.menu-item-search-2 {
  flex: 1;
  background-color: #3F3;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;  
}

.add-width {
  width: 1px;
}

最佳答案

还有 2 种其他无害的方法可以使用:

.menu-item-2 {
  flex: 1;
  background-color: #0ff;
  overflow:hidden;
}

.menu-item-2 {
  flex: 1;
  background-color: #0ff;
  min-width:0;
}

https://codepen.io/gc-nomade/pen/yLyJypm

关于css - Flex box 需要宽度才能适当调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59295313/

上一篇:css - 标题标签不继承 CSS 属性

下一篇:javascript - 如何使用 vanilla js 在导航栏的链接中应用 "active"类?

相关文章:

css - 固定页眉/页脚,带边距的流动内容

CSS Perspective 不适用于 body

html - 在同一容器中对齐具有不同高度的 flex 元素

css - 管理多行 CSS flex-box 增长以创建相等 block 的网格

html - Div 背景颜色在带有文档类型的视口(viewport)处被截断

php - htaccess SEO url 包含样式失败.. 如何解决这个问题?

html - 将第二个 flex 元素垂直和水平分成两半

jquery - 使用 jquery 更改 jquery ui-datepicker 的宽度

css - 缩放或更改分辨率时如何使 css 菜单宽度无法更改?

javascript - 使用 jquery mouseover 事件在单个元素中添加 2 个 css