Explain Codes LogoExplain Codes Logo

How do I keep two side-by-side div elements the same height?

css
responsive-design
best-practices
flexbox
Alex KataevbyAlex Kataev·Feb 12, 2025
TLDR

To quickly achieve equal heights for divs side-by-side, you can leverage the powers of CSS Flexbox. Set display: flex on their parent container, and voilà!

.container { display: flex; /* Flex, not just for gymnasts anymore! */ }
<div class="container"> <div>First div content</div> <div>Second div, possibly longer</div> <!-- Long content? No problem, Flexbox has got your back! --> </div>

Flexbox 101: Key concepts

CSS Flexbox offers a straightforward solution for aligning divs with equal heights. It's a flexible layout model that lets you organize content in 1D or 2D orientation.

The principal characteristic is that Flexbox allows flex items to adjust their dimensions to fill available space. For this, divs employ flex-growth and flex-shrink properties.

.container > div { flex: 1; /* Sharing is caring, all divs get equal width! */ }

Nail it with advanced Flexbox techniques

Aligning content flawlessly

Use align-items: stretch for the container to dispatch equal heights to child divs. It's like divs are having a group hug, and everyone stretches to match the tallest.

Handling dynamic content with grace

Flexbox is the supermodel of CSS. It walks the runway of div elements and adjusts their height automatically when content changes, enabling your layout to shine in its best visuals.

Compatibility readiness

Though Flexbox is widely supported, it's always a good principle to ensure browser compatibility. Embrace "know thy user" and use Can I use... to check your site's functionality across all platforms.

Alternatives to Flexbox and potential pitfalls

Simulating a table

When Flexbox is not an option, display: table; and display: table-cell; can simulate a table behavior, giving equal height appearance. But beware, the ability to handle dynamic content may wobble.

Containing floated elements

The overflow: hidden; technique can trap floated elements inside a parent div. It ensures the container adjusts to accommodate the taller div. Although functional, it can't beat the versatility and adaptability of Flexbox.

Setting boundaries with minimum heights

Setting minimum heights (min-height) can troubleshoot height discrepancies. However, there's a catch- if the content overflows, this approach will be out of depth. Flexbox, again, outsmarts it without breaking a sweat.

Mind the traps

Navigating away from negative margin hacks and faux column techniques could save you some hassles. They lose their charm when the content changes dynamically. Here, the adaptability of Flexbox comes as a savior.

Fallback techniques for all conditions

Sticking to good old CSS methods

CSS Faux Columns can replace Flexbox in scenarios lacking sufficient support. But remember, the absence of flexibility might make them stumble on dynamic content changes.

Calling in JavaScript

If all else fails, JavaScript-based height equalization might come to the rescue, often accomplished by jQuery. But then, it's always wise to steer clear of script dependencies unless absolutely necessary.