How to make a parent div auto size to the width of its children divs

HtmlCss

Html Problem Overview


I'm trying to make the parent div only as wide as the child div's. Auto width is making the parent div fit the entire screen. The children divs will be different widths depending on their content so I need the parent div to adjust accordingly.

<div style='width:auto;'>
  <div style="width: 135px; float: left;">
    <h4 style="padding-right: 5px; padding-left: 15px;">Column1</h4>
    <dl style="padding-right: 5px; padding-left: 15px; margin-top: -8px; overflow-x: hidden;">
      <dd style="white-space: nowrap;">1</dd>
      <dd style="white-space: nowrap;">2</dd>
    </dl>

    <h4 style="padding-right: 5px; padding-left: 15px;">Column1</h4>
    <dl style="padding-right: 5px; padding-left: 15px; margin-top: -8px; overflow-x: hidden;">
      <dd style="white-space: nowrap;">1</dd>
      <dd style="white-space: nowrap;">2</dd>
    </dl>
  </div>

  <div style="width: 135px; float: right;">
    <h4 style="padding-right: 5px; padding-left: 10px;">Column2</h4>
    <dl style="padding-right: 5px; padding-left: 15px; margin-top: -8px; overflow-x: hidden;">
      <dd style="white-space: nowrap;">1</dd>
      <dd style="white-space: nowrap;">2</dd>
      <dd style="white-space: nowrap;">3</dd>
    </dl>
  </div>
</div>

Html Solutions


Solution 1 - Html

Your interior <div> elements should likely both be float:left. Divs size to 100% the size of their container width automatically. Try using display:inline-block instead of width:auto on the container div. Or possibly float:left the container and also apply overflow:auto. Depends on what you're after exactly.

Solution 2 - Html

The parent div (I assume the outermost div) is display: block and will fill up all available width of its container (in this case, the body) that it can. Using a different display type -- inline-block is probably what you are going for:

http://jsfiddle.net/a78xy/

Solution 3 - Html

this is the easiest way to make your parent div inherit it's child width.

.container-fluid {
  border: 1px solid black;
  /*the needed css class to make your parent div responsive to it's children's max-width
  */
  width: max-content
}
.wrapper {
  border: 1px solid red;
  width: 300px
}

<div class="container-fluid">
  <div class="wrapper">xxx</div>
</div>

i hope someone finds this usefull

Solution 4 - Html

I was struggling with this and was setting the width of my parent component. As an accident, I found out the CSS width: fit-content;

Here is an example:

.outerContainer {
  width: 300px;
  height: 300px;
  background: gray;
}

.innerContainer {
  width: fit-content;
  border: 3px solid red;
}

.item {
  width: 200px;
  height: 200px;
  padding: 10px;
  background: blue;
}
  

<div class="outerContainer">
  <div class="innerContainer">
    <div class="item">
    </div>
  </div>
</div>

In the example the innerContainer div (the one with a red background) fits to the content of the item container. The outerContainer div is there to show the contrast.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionbradley4View Question on Stackoverflow
Solution 1 - HtmlMadbreaksView Answer on Stackoverflow
Solution 2 - HtmlExplosion PillsView Answer on Stackoverflow
Solution 3 - HtmlRiadh BgView Answer on Stackoverflow
Solution 4 - HtmlPrasannaView Answer on Stackoverflow