diff --git a/snippets/last-item-will-all-available-height.md b/snippets/last-item-will-all-available-height.md new file mode 100644 index 000000000..ab9dc95c2 --- /dev/null +++ b/snippets/last-item-will-all-available-height.md @@ -0,0 +1,75 @@ +### Last item with all available height + +Avoid vertical scrollbar and take advantage of current viewport space. Given the last element with all available space in current viewport, even when resizing window. + +#### HTML + +```html +
+
Div 1
+
Div 2
+
Div 3
+
+``` + +#### CSS + +```css +html, +body { + height: 100%; + margin: 0; +} + +.container { + height: 100%; + display: flex; + flex-direction: column; +} + +.container > div:last-child { + background-color: #333; + flex: 1; +} +``` + +#### Demo + +
+
+
Div 1
+
Div 2
+
Div 3
+
+
+ + + +#### Explanation + +1. `height: 100%` set the height of container as viewport height +2. `display: flex` enables flexbox. +3. `flex-direction: column` set the direction of flex items' order from top to down +4. `flex-grow: 1` the flexbox will apply remaining available space of container to last child element. + +The parent must have a viewport height. `flex-grow: 1` could be applied to the first or second element, which will have all available space. + +#### Browser support + +⚠️ Needs prefixes for full support. + +- https://caniuse.com/#feat=flexbox + +