SCSS

by perenzo

HTML

<div class="app">
  <div class="vstack sidebar">
    <div class="-fit">Sidebar</div>
  </div>
  <div class="-sep"></div>
  <div class="vstack middle">
    <div>Search</div>
    <div class="-sep"></div>
    <div class="-scroll -grow list">
      
      <div>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
        kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
        vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
      </div>
      <div>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
        kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
        vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
      </div>
      <div>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
        kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
        vero...

SCSS

html, body {
  height: 100%; 
  margin: 0;
}

body {

  * {
    box-sizing: border-box;
    flex: none;
  }

  .app-mobile-fix { // Fixes scroll issues on iPhone
    position: fixed;
    width: 100%;
    height: 100%;
  }

  .app {
    height: 100%; // First child of body needs to have a fixed height of 100%
  }

  .app, .hstack, .vstack {
    display: flex;
    
    &, > * {
      flex: none; // respects the size settings
      overflow: hidden;
    }
  }

  .app, .hstack {
    flex-direction: row;

    > .-sep {
      width: 4px;
    }
  }

  .vstack {
    flex-direction: column;

    > .-sep {
      height: 4px;
    }
  }

  .-grow {
    flex: auto;
  }

  .-scroll {
    overflow: auto;
  }
 
  .-sep {
    background: red;
  }

}

// Colors and withs

.app {
  background: yellow;
}

.sidebar {
  background: darkgrey;
  width: 200px;
}

.middle {
  background: lightcyan;
  width: 200px;
}

.menu {
  background: #e39d14;
}

.content {
  background: white;
}

.info {
  background: darkgrey;
  width: 200px;
}

.list {
  background: sandybrown;
}