Explain Codes LogoExplain Codes Logo

Make div (height) occupy parent remaining height

html
responsive-design
css-grid
layout
Alex KataevbyAlex Kataev·Nov 20, 2024
TLDR

Easily attain a full-height child div with CSS Flexbox: Show the .parent to display: flex; and flex-direction: column;. Implement flex-grow: 1; on .child and voila! You've discreetly wielded CSS magic to make the child adhere to the parent's leftover vertical space.

.parent { /* Mom always said keep the house clean and the display flexible */ display: flex; flex-direction: column; } .child { /* Like a space-hungry teenager, I'll take all the space you give me */ flex-grow: 1; }
<div class="parent"> <div>My personal space</div> <div class="child">I'll grow as much as I can!</div> </div>

Flex-grow is your secret weapon, allowing the .child to dynamically exploit all unoccupied space—great for keeping the balance in your layout.

Optimizing child growth

Remember to assign explicit dimensions or a min-height to the .parent div. Setting boundaries is healthy; it helps define the space .child can consume. Supply overflow: auto; to .child if content overflows to generate a scrollable region, ensuring a neat layout. Keep an eye on the browser compatibility of CSS properties such as calc(), and apply box-sizing: border-box; to tuck padding and borders discreetly within the element.

Working with sibling content

If sibling elements, those jealous rivals of .child, occupy space, you can still make .child adjust gracefully. If the sibling's height remains unknown, swipe calc() into action and subtract the fixed height from 100%. The child div continues to morph, accommodating siblings' sizes.

The table alternative

Not keen on Flexbox? You have an ally in CSS's display: table and table-row tricks. Apply display: table; and a specific height for .parent div, and let .child don a display: table-row; to automatically fill any remaining height.

User experience and overflow

Mastering overflow management is a user experience game changer. Intelligent handling of overflow with overflow: auto; or overflow: hidden; keeps your layout refined and scrollbars under control.

Browser quirks and solutions

While Flexbox is mighty, certain browser behaviors can be cryptic. For example, Safari may insist on explicit heights on flex containers—be prepared with fallbacks, quirks, and alternative techniques such as using the min-height property for layout sanity.

CSS Grid for complex layouts

For layouts that make your head spin, reach out to CSS Grid. It offers pinnacle control over element sizing and positioning in modern web development, including smooth solutions to filling remaining heights. With the power of grid-template-rows and fractional units (fr), you're the layout lord.