JSFiddle - React, Tailwind, and code Playground
HTML
<div id="wrapper">
<img class="ratioDriver" src="http://dummyimage.com/200x100/000/fff.gif&text=2w:1h+Ratio" />
<div id="header">Header<br />Header<br />Header Last</div>
<div id="content">
<div id="left">Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left<br />Left Last</div>
<div id="right">Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right<br />Right Last</div>
</div>
<div id="footer">Footer<br />Footer<br />Footer<br />Footer<br />Footer<br />Footer Last</div>
</div>
CSS
html {
font-size: 1vw;
}
body {
margin: 0;
padding: 0;
}
#wrapper{
width: 100%;
max-width: 800px;
position: relative;
margin: 0 auto;
}
.ratioDriver {
width: 100%;
display: block;
}
#header{
background-color: red;
width: 100%;
height: 25%; /* 100 / 400 = .25 = 25% */
position: absolute;
top: 0;
left: 0;
font-size: 3rem;
}
#left{
position: absolute;
top: 25%;
left: 0;
background-color: yellow;
width: 25%; /* 200 / 800 = .25 = 25% */
height: 50%; /* 200 / 400 = .5 = 50% */
font-size: .99rem;
}
#right{
position: absolute;
top: 25%;
left: 25%;
background-color: orange;
width: 75%;
height: 50%;
font-size: 1.25rem;
}
#footer{
position: absolute;
top: 75%;
left: 0;
background-color: blue;
width: 100%;
height: 25%;
font-size: 1.3rem;
}