макет flexbox сделает работу
#container {
display: inline-flex;
flex-direction: column;
align-items:flex-start; /* OR flex-end */
border: solid orange 2px;
}
.child {
border: solid limegreen 2px;
}
<div id='container'>
<div class='child'>abcdefghi</div>
<div class='child'>abc</div>
<div class='child'>abc</div>
</div>
Или display:table
:
#container {
display: inline-block;
border: solid orange 2px;
}
.child {
border: solid limegreen 2px;
display:table;
/* margin-left:auto to push to the right */
}
<div id='container'>
<div class='child'>abcdefghi</div>
<div class='child'>abc</div>
<div class='child'>abc</div>
</div>
Даже float сделает свою работу:
#container {
display: inline-block;
border: solid orange 2px;
}
.child {
border: solid limegreen 2px;
float:left;
clear:left;
/* OR right for both */
}
<div id='container'>
<div class='child'>abcdefghi</div>
<div class='child'>abc</div>
<div class='child'>abc</div>
</div>