I have two flex children. I don't know the size of those children, but I want the .right
(which contains unknown, but finite number of e.g. status icons) to not break, and fit on line, while .left
child (which contains label of potentially too-long text) to break so that the .right
child fits.
In the snippet, the .left
should break the text so that the .right
fits. Neither of the two children should overflow the .container
.
I'm able to accomplish this by using word-break: break-word
on .left
, but that's non-standard. I can also use word-break: break-all
, but that doesn't try to wrap the word on next line (as word-wrap
does), first, which is undesirable. word-wrap: break-word
doesn't do anything.
As stated, I cannot use width: calc( 100% - <right-width> )
on .left
, because I don't know width of .right
child.
note: the children's height: 20px
is just to see the parent container. It's not part of the requirement.
Bonus: in the example the width of .container
is known, but it may potentially not be known, either (i.e. it may inherit it in some way).
.container {
display: flex;
width: 200px;
height: 40px;
background: pink;
}
.left {
background: rgba(0,255,0,.1);
height: 20px;
// word-break: break-word; // works in WebKit, but non-standard
word-wrap: break-word;
}
.right {
background: rgba(0,0,255,.1);
height: 20px;
}
<div class="container">
<div class="left">xoxoxoxoxoxoxoxoxoxoxoxoxoxoxox</div>
<div class="right">rarararara</div>
</div>