JSFiddle - React, Tailwind, and code Playground
HTML
<div class="fixed-width-parent">
<div class="flex-child">
<div class="child-1">
<div class="unbreakable-text">
<strong>Very long text NOT OK</strong>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta rem
</div>
<div class="unimportant">Unimportant text
<br> Very unimportant</div>
</div>
<div class="child-2">
<div class="fancy-button">
Button
</div>
</div>
</div>
</div>
<div class="fixed-width-parent">
<div class="flex-child">
<div class="child-1">
<div class="unbreakable-text">
<strong>Short text OK</strong>
</div>
<div class="unimportant">Unimportant text
<br> Very unimportant</div>
</div>
<div class="child-2">
<div class="fancy-button">
Button
</div>
</div>
</div>
</div>
<div class="fixed-width-parent expectation">
<div class="flex-child">
<div class="child-1">
<div class="unbreakable-text">
<strong>EXPECTATION (without <code>max-width</code> as %)</strong> Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</div>
<div class="unimportant">Unimportant text
<br> Very unimportant</div>
</div>
<div class="child-2">
<div class="fancy-button">
Button
</div>
</div>
</div>
</div>
CSS
.fixed-width-parent {
margin: 1em 2em;
width: 500px;
background: #dedede;
padding: 15px;
}
.unbreakable-text {
display: inline-block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.flex-child {
display: flex;
}
.child-1 {
flex-grow: 1;
}
.child-2 {
align-self: center;
margin-left: 5px;
}
.fancy-button {
padding: 5px;
background-color: #1a1;
border: 1px solid #080;
border-radius: 5px;
color: #fff;
}
.expectation .child-1 {
min-width: 88%;
}
.unimportant {
color: #bbb;
}
body {
font-family: sans-serif;
font-size: 14px;
}