section.maxHeightContainer, div.maxHeightContainer display: table height: 100% width: 100% section.maxHeightRow, div.maxHeightRow display: table-row section.maxHeightContent, div.maxHeightContent //Use this for a row of content that should shrink to fit the content size. display: table-cell height: 1px section.maxHeightContentExpandAndScroll, div.maxHeightContentExpandAndScroll //Use this for a row of content that should take up all remaining space and will contain potentially scrolled content. display: table-cell height: 100% position: relative section.maxHeightContentScrolled, div.maxHeightContentScrolled //Use this to create the scrolled content. Can use any display within it. position: absolute top: 0 bottom: 0 left: 0 right: 0 width: auto height: auto overflow-y: auto // ***************** // ** Vertical Stack // ** Use .verticalStack on containers, and .vscFixed or .vscExpand on children (they can also be containers). // ** Designed to use Flexbox to allow full screen (vertical) layouts. Fixed children will fit the content, and expand children will consume all available vertical space, but will not exceed the vertical space. // ** Use .columnContainer to setup a horizontally scrolling, full height container where children are tiled down first, then wrap to the next column. /* Test Code: -------CSS------ * { margin: 0; padding: 0; } html { height: 100%; min-height: 100%; } body { background: purple; color: black; min-height: 100%; height: 100%; } .vscFixed { flex: 0 0 auto; width: 100%; } .vscExpand { flex: 1 1 1px; width: 100%; } .verticalStack { width: 100%; height: 100%; display: flex; flex-flow: column; justify-content: flex-start; align-items: flex-start; align-content: stretch; } .columnContainer { width: 100%; height: 100%; display: flex; flex-flow: column wrap; justify-content: flex-start; align-items: stretch; align-content: flex-start; overflow-x: auto; background: white; } .columnContent { flex: none; width: 300px; } -------Javascript------ var container = document.querySelector('.columnContainer'); for(var i = 0; i < 400; i++) { var child = document.createElement("div"); child.innerHTML = "Element " + i; child.className = "columnContent"; container.appendChild(child); } -------HTML------
Some content.
More content...