如何包装内联用div的内容,以使包裹的部分占据了以前的内线式div下方的空白空间?

发布于 2025-02-05 03:36:54 字数 1989 浏览 3 评论 0 原文

.container {
  height: 200px;
  width: 200px;
  border: 5px solid black;
  padding: 5px;
}

.button-group {
  display: inline-flex;
  flex-wrap: wrap;
}

.box {
  height: 45px;
  width: 45px;
  border-width: 5px;
  border-style: solid;
}

.red {
  border-color: red;
}

.green {
  border-color: green;
}

.blue {
  border-color: blue;
}

.yellow {
  border-color: yellow;
}

.pink {
  border-color: pink;
}

.brown {
  border-color: brown;
}
<div class="container">
  <div class="button-group">     
    <div class="box red">R</div>
    <div class="box green">G</div>
  </div>

  <div class="button-group">     
    <div class="box blue">Bl</div>
    <div class="box yellow">Y</div>      
  </div>
  
  <div class="button-group">     
    <div class="box pink">P</div>
    <div class="box brown">Br</div>      
  </div>
</div>

实际:

^如果在第一个 box 中只有一个 button组 和两个 box 在第二个按钮组然后所有三个都占据了第一行。但是,一旦您将第三个 box 添加到第二个按钮组时,其所有三个 box 移动到下一行。我希望 box 不再发生这种情况,无论它们属于哪种 button> button> button

预期:

总体期望: n container m 内部的内联用divs数>盒子 <代码>按钮组。任何按钮组或任何 box 都可以动态删除。最后,每行上必须有三个 box ,或尽可能多的WRT到可用的宽度。

谢谢。

.container {
  height: 200px;
  width: 200px;
  border: 5px solid black;
  padding: 5px;
}

.button-group {
  display: inline-flex;
  flex-wrap: wrap;
}

.box {
  height: 45px;
  width: 45px;
  border-width: 5px;
  border-style: solid;
}

.red {
  border-color: red;
}

.green {
  border-color: green;
}

.blue {
  border-color: blue;
}

.yellow {
  border-color: yellow;
}

.pink {
  border-color: pink;
}

.brown {
  border-color: brown;
}
<div class="container">
  <div class="button-group">     
    <div class="box red">R</div>
    <div class="box green">G</div>
  </div>

  <div class="button-group">     
    <div class="box blue">Bl</div>
    <div class="box yellow">Y</div>      
  </div>
  
  <div class="button-group">     
    <div class="box pink">P</div>
    <div class="box brown">Br</div>      
  </div>
</div>

Actual:

Actual output

^ If there is only one box in the first button-group and two box in the second button-group then all three occupy the first line. However, as soon as you add a third box to the second button-group, all of its three box move to the next line. Instead of that happening, I want the box to occupy any available space on the lines, regardless of which button-group they belong to.

Expected:

Expected output

Overall expectation: There could be n number of inline-flex divs inside container and m number of box inside button-group. Any button-group or any box could be removed dynamically. At the end, there must be three box on each line, or as many as possible w.r.t. to available width.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抽个烟儿 2025-02-12 03:36:55

使用显示:内容并移动显示:flex 到容器

.container {
  height: 200px;
  width: 200px;
  border: 5px solid black;
  padding: 5px;
  display: flex;
  flex-wrap: wrap;
  align-content: start;
}

.button-group {
  display: contents;
}

.box {
  height: 45px;
  width: 45px;
  border-width: 5px;
  border-style: solid;
}

.red {
  border-color: red;
}

.green {
  border-color: green;
}

.blue {
  border-color: blue;
}

.yellow {
  border-color: yellow;
}

.pink {
  border-color: pink;
}

.brown {
  border-color: brown;
}
<div class="container">
  <div class="button-group">     
    <div class="box red">R</div>
    <div class="box green">G</div>
  </div>

  <div class="button-group">     
    <div class="box blue">Bl</div>
    <div class="box yellow">Y</div>      
  </div>
  
  <div class="button-group">     
    <div class="box pink">P</div>
    <div class="box brown">Br</div>      
  </div>
</div>

Remove the button-group using display:contents and move display:flex to the container

.container {
  height: 200px;
  width: 200px;
  border: 5px solid black;
  padding: 5px;
  display: flex;
  flex-wrap: wrap;
  align-content: start;
}

.button-group {
  display: contents;
}

.box {
  height: 45px;
  width: 45px;
  border-width: 5px;
  border-style: solid;
}

.red {
  border-color: red;
}

.green {
  border-color: green;
}

.blue {
  border-color: blue;
}

.yellow {
  border-color: yellow;
}

.pink {
  border-color: pink;
}

.brown {
  border-color: brown;
}
<div class="container">
  <div class="button-group">     
    <div class="box red">R</div>
    <div class="box green">G</div>
  </div>

  <div class="button-group">     
    <div class="box blue">Bl</div>
    <div class="box yellow">Y</div>      
  </div>
  
  <div class="button-group">     
    <div class="box pink">P</div>
    <div class="box brown">Br</div>      
  </div>
</div>

夜灵血窟げ 2025-02-12 03:36:55

如果您删除flex并将纽扣组显示内联,但他们的孩子显示内联块(因此他们都显示内线并占用给定的维度),您将获得所需的结果。

更新:要删除框之间的空间,请设置并重置字体大小如下:

.container {
  height: 200px;
  width: 200px;
  border: 5px solid black;
  padding: 5px;
  font-size: 0;
}

.button-group {
  display: inline;
}

.box {
  height: 45px;
  width: 45px;
  border-width: 5px;
  border-style: solid;
  display: inline-block;
  font-size: initial;
}

.red {
  border-color: red;
}

.green {
  border-color: green;
}

.blue {
  border-color: blue;
}

.yellow {
  border-color: yellow;
}

.pink {
  border-color: pink;
}

.brown {
  border-color: brown;
}
<div class="container">
  <div class="button-group">
    <div class="box red">R</div>
    <div class="box green">G</div>
  </div>

  <div class="button-group">
    <div class="box blue">Bl</div>
    <div class="box yellow">Y</div>
  </div>

  <div class="button-group">
    <div class="box pink">P</div>
    <div class="box brown">Br</div>
  </div>
</div>

If you remove the flex and make the button-groups display inline but their children display inline-block (so they both display inline and take up the given dimensions) you get the required result.

UPDATE: to remove the space between the boxes, set and reset the font-sizes as below:

.container {
  height: 200px;
  width: 200px;
  border: 5px solid black;
  padding: 5px;
  font-size: 0;
}

.button-group {
  display: inline;
}

.box {
  height: 45px;
  width: 45px;
  border-width: 5px;
  border-style: solid;
  display: inline-block;
  font-size: initial;
}

.red {
  border-color: red;
}

.green {
  border-color: green;
}

.blue {
  border-color: blue;
}

.yellow {
  border-color: yellow;
}

.pink {
  border-color: pink;
}

.brown {
  border-color: brown;
}
<div class="container">
  <div class="button-group">
    <div class="box red">R</div>
    <div class="box green">G</div>
  </div>

  <div class="button-group">
    <div class="box blue">Bl</div>
    <div class="box yellow">Y</div>
  </div>

  <div class="button-group">
    <div class="box pink">P</div>
    <div class="box brown">Br</div>
  </div>
</div>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文