使用内容宽度扩展容器 div

发布于 2024-11-09 08:20:04 字数 1024 浏览 3 评论 0原文

我的应用程序具有以下结构:

<div id="container">
  <div id="child_container">
    <div class="child"></div>
    <div class="child"></div>
    ...
    <div class="child"></div>
  </div>
</div>

每个子 div 都有已知的固定宽度,但应用程序允许将更多子 div 插入到 child_container div 中。

我想做的是让容器 div 在需要时水平扩展,给定子容器的总宽度。

这就是当前发生的情况:

+------ container -------+
+--- child_container ----+
| child1 child2 child3   |
| child4                 |
+------------------------+

如果我将 child_container div 宽度设置为固定值,我可以让它水平扩展超过容器 div,尽管有点丑陋,但它仍然有效:

+------ container -------+
+------ child_container -+----+
| child1 child2 child3 child4 |
+------------------------+----+

但是,每当添加新子项时都需要重新计算它。

有没有一种方法可以在不使用子容器固定宽度的情况下做到这一点,最终结果是

+--------- container ---------+
+------ child_container ------+
| child1 child2 child3 child4 |
+-----------------------------+

谢谢。

I have the following structure in my application:

<div id="container">
  <div id="child_container">
    <div class="child"></div>
    <div class="child"></div>
    ...
    <div class="child"></div>
  </div>
</div>

Each child div has a known fixed width, but the application allows more of them to be inserted in the child_container div.

What I'm trying to do is to have the container div expand horizontally when needed, given the total width of the child container.

This is what happens currently:

+------ container -------+
+--- child_container ----+
| child1 child2 child3   |
| child4                 |
+------------------------+

If I set the child_container div width to a fixed value, I can get it to expand horizontally past the container div, which works despite being a bit ugly:

+------ container -------+
+------ child_container -+----+
| child1 child2 child3 child4 |
+------------------------+----+

However, that requires recalculating it whenever a new child is added.

Is there a way to do this without using fixed widths for child container, in a way such that the end result is

+--------- container ---------+
+------ child_container ------+
| child1 child2 child3 child4 |
+-----------------------------+

Thanks.

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

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

发布评论

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

评论(6

陌路黄昏 2024-11-16 08:20:04

更简单:

<style>
    #container{ display: inline-block; }
</style>

Even easier:

<style>
    #container{ display: inline-block; }
</style>
春风十里 2024-11-16 08:20:04

像这样的东西应该有效:

#container, #child_container, .child { 
    position: relative; 
    float: left;
}

Something like this should work:

#container, #child_container, .child { 
    position: relative; 
    float: left;
}
初雪 2024-11-16 08:20:04

添加子元素时,父容器不会增长。

+------ container -------+
+--- child_container ----+
| child1 child2 child3   |
| child4                 |
+------------------------+

但我们可以通过使用 css3 flex box 避免在下一行渲染新的。该示例放置在下面提到的 路径

  .products{
            display: -webkit-flex;
            -webkit-flex-flow: row;
            /*-webkit-justify-content: center;*/
        }
        .products > div{
            padding: 0 4em;
        }

结果将如下所示:

+--- child_container ----+|
| child1 child2 child3  ch|ild4 child5  
|                         |
+------------------------+

The parent container won't grow when a child element is added.

+------ container -------+
+--- child_container ----+
| child1 child2 child3   |
| child4                 |
+------------------------+

but we can avoid the rendering of new one on the next line by using css3 flex box. The sample is placed the below mentioned path

  .products{
            display: -webkit-flex;
            -webkit-flex-flow: row;
            /*-webkit-justify-content: center;*/
        }
        .products > div{
            padding: 0 4em;
        }

The result will look like this:

+--- child_container ----+|
| child1 child2 child3  ch|ild4 child5  
|                         |
+------------------------+
对风讲故事 2024-11-16 08:20:04

如果你浮动剩下的所有内容,包括包含的 div,它就会起作用。

If you float everything left including the containing divs, it will work.

-残月青衣踏尘吟 2024-11-16 08:20:04

今天的现代解决方案是

#child_container {
    display: flex;
}

因为 flex-wrap 默认设置为

flex-wrap: nowrap;

这个简单的解决方案就像一个魅力。现在也在所有相关浏览器中。

The modern solution today would be

#child_container {
    display: flex;
}

Because flex-wrap is by default set to

flex-wrap: nowrap;

This simple solution works like a charm. And by now also in all relevant browsers.

筑梦 2024-11-16 08:20:04

只需将父级的宽度设置为 120% 即可完成 =)

just set the width of the parent to 120% and done =)

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