html - 动态调整宽度和包装嵌套的 flexboxes

标签 html css flexbox

我有一个 div 在一些 flexboxes 中嵌套了几层,根据其中文本的长度动态改变宽度。

是否有可能让包含的 flexboxes 也改变宽度并根据需要纯粹用 CSS 换行?如果没有,我愿意接受任何 JavaScript 解决方案。

为了更好地理解我在说什么,这是一个视觉效果:

Nested flexboxes

如果有人想玩它,这里有一段代码:

.flex-container {
  display: flex;
  flex-wrap: wrap;
}

.flex-item {
  flex: 1 auto;
  border: 1px solid black;
  margin: 5px;
}

.root {
  max-width: 600px;
  border: 1px solid black;
}

.level-2 {
  background-color: tomato;
}

.level-3 {
  background-color: cornflowerblue;
}
<div class="flex-container root">
  <div class="flex-container flex-item level-2">
    <div class="flex-item level-3">
      <div>Some text</div>
      <div>Some text</div>
      <div>Some text</div>
      <div>Some text</div>
    </div>
    <div class="flex-item level-3">
      <div>Some text</div>
      <div>Some text</div>
      <div>Some text</div>
      <div>Some text</div>
    </div>
  </div>
  <div class="flex-container flex-item level-2">
    <div class="flex-item level-3">
      <div>Some text</div>
      <div>Some longest text over here</div>
      <div>Some text</div>
      <div>Some text</div>
    </div>
    <div class="flex-item level-3">
      <div>Some text</div>
      <div>Some text</div>
      <div>Some text</div>
      <div>Some text</div>
    </div>
  </div>
</div>

最佳答案

我能看到的最好的情况是第一种和第二种情况。它不是 100% 完美,但在调整大小时你会看到 1 和 2 之间的转换:

* {
 box-sizing:border-box;
}

.container {
  background:red;
  padding:10px;
  display:flex;
  flex-wrap:wrap;
  margin-bottom:20px;
}
.box {
  flex:1 0 50%;
  background:blue;
  border:1px solid;
  display:flex;
  padding:10px;
}
.box > span {
   background:#fff;
   border:1px solid;
  flex:1 0 50%;
  white-space:nowrap;
}
<div class="container">
  <div class="box">
    <span>some text<br>some text<br>some text</span>
    <span>some text<br>some text<br>some text</span>
  </div>
  <div class="box">
    <span>some text<br>some text<br>some text</span>
    <span>some text<br>some text<br>some text</span>
  </div>
</div>
<div class="container">
  <div class="box">
    <span>some text<br>some text long long long long text<br>some text</span>
    <span>some text<br>some text<br>some text</span>
  </div>
  <div class="box">
    <span>some text<br>some text<br>some text</span>
    <span>some text<br>some text<br>some text</span>
  </div>
</div>

关于html - 动态调整宽度和包装嵌套的 flexboxes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51126259/

相关文章:

css - 元素是我的组件没有以统一的方式发送

css - React Native Nativebase如何让Picker向右浮动

jquery - 如何将下拉菜单更改为普通链接

javascript - 如果子按钮为绿色,则更改主按钮的颜色

jquery - 图像的 anchor href 是否使其下载?

javascript - 在 JS 中使用 CSS 属性 calc()

javascript - 如何使flot库悬停圆圈效果在单击绘图时保持不变?

php - 从循环打印时如何定义最后一个 child ?

css - bookdown 中自定义 block 中的样式链接

android - 将内容限制在特定列的移动友好 CSS 多列布局