CSS
html { box-sizing: border-box; font: 400 16px/1.45 'Source Code Pro'; } *, *:before, *:after { box-sizing: inherit; margin: 0; padding: 0; border: 0; outline: none; overflow-x: hidden; } body { background: #121; color: #FEF; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 100vw; height: 100vh; } .container { display: flex; color: #fff; height: -moz-fit-content; height: -webkit-fit-content; height: fit-content; background: blue; } .left { background: blue; min-height: 100vh; min-width: 150px; flex-shrink: 0; } .middle { background: green; min-height: 100vh; overflow: hidden; width: calc(100vw - 400px); padding-bottom: 60px; flex-grow: 1; flex-shrink: 0; } .middle .fixed-footer { background: orange; position: fixed; bottom: 0; width: 100vw; width: inherit; padding: 16px 0; overflow-x: hidden; } .right { background: blue; min-height: 100vh; min-width: 250px; flex-shrink: 0; } @media screen and (min-width: 640px) { html { margin-left: calc(100vw - 100%); margin-right: 0; overflow-y: auto; } }
Added ipsum content for Star Wars to demonstrate the vertical flexibility of .middle and how .fixed-footer is stationary and has a width of .middle .
Demo
source share