JSFiddle - React, Tailwind, and code Playground
by teleclimber
HTML
<div class="grid">
<div class="col-2-3">
<div class="component">
<p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum yada yada...</p>
<input type="button" value="go go gadget go" />
</div>
</div>
<div class="col-1-3">
Sidebar
</div>
</div>
<div id="feedback">...</div>
CSS
.grid {
max-width: 900px;
margin: 0 auto;
--ratio: 1;
}
[class*='col-'] {
float: left;
}
.col-2-3 {
width: 66.66%;
--ratio: 0.6666;
}
.col-1-3 {
width: 33.33%;
--ratio: 0.3333;
}
.component {
background-color: #eee;
display: flex;
align-items: flex-end;
}
.component P {
flex-grow: 100;
}
.component INPUT {
width: 200px;
}
/*@media all and ( max-col-width: 200px ) */
@media all and (max-width: 450px),
all and (min-width: 600px) and (max-width: 675px) {
.component {
background-color: green;
flex-direction: column;
}
}
.bar {
position: absolute;
background-color: red;
height: 10px;
width: calc( var(--ratio) * 100vw );
left: 0;
top: 0;
}
@media all and (max-width: 600px) {
[class*='col-'] {
float: none;
width: 100%;
--ratio: 1;
}
}
#feedback {
clear: both;
border: 1px solid #ccc;
padding: 5px;
}
JavaScript
window.addEventListener( 'resize', function() {
document.getElementById( 'feedback' ).innerHTML = 'width: '+ document.documentElement.clientWidth+'px';
});