Options to force element to stay on line:
Flexbox
To guarantee elements staying on the same line they can be flex-items (unless you specify flex-wrap: wrap
for container). So making #cont1
flexbox container prevents your items from moving to new line. Also float
properties will be ignored for flex-items and it's optional to specify width for your items. Demo:
#cont1 {
/* become a flex-container */
/* its children will be a flex-items */
display: flex;
width: 50%;
}
#div1, #div2 {
border: 1px solid black
}
<div id=cont1>
<div id=div1>a<br>b<br>c<br></div>
<div id=div2>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
You just specify your container as grid-container and add templates where you specify column width. Demo:
#cont1 {
/* become a flex-container */
/* its children will be a flex-items */
display: grid;
width: 50%;
grid-template-columns: auto auto;
}
#div1, #div2 {
border: 1px solid black
}
<div id=cont1>
<div id=div1>a<br>b<br>c<br></div>
<div id=div2>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
For this to work in IE10+/Edge you need to use old syntax and specify cell placement manually unless all grid items will stack in first cell. Demo:
#cont1 {
/* become a flex-container */
/* its children will be a flex-items */
display: -ms-grid;
display: grid;
width: 50%;
grid-template-columns: auto auto;
}
#div1, #div2 {
border: 1px solid black
}
#div2 {
-ms-grid-column: 2;
}
<div id=cont1>
<div id=div1>a<br>b<br>c<br></div>
<div id=div2>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
Table
Just add display: table
for container and display: table-cell
for items. Demo:
#cont1 {
/* become a flex-container */
/* its children will be a flex-items */
display: table;
width: 50%;
grid-template-columns: auto auto;
}
#div1, #div2 {
display: table-cell;
border: 1px solid black
}
<div id=cont1>
<div id=div1>a<br>b<br>c<br></div>
<div id=div2>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>