I need some help to understand what to me is an unexpected behaviour.
Why the h2 remains inline even though I set it's display property to block? I expected it to be 100% wide on top of the div elements as a title.
section{
border: 1px solid red;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-around;
align-items: stretch;
}
h2 {
display: block;
border: 1px solid red;
}
<section>
<h2>main title</h2>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
</section>
Because this is a flex row set to nowrap which means every flex child of the parent will be a cell/column in a horizontal row.
You will either need to use width: 100% or flex-basis: 100% on the h2 and also add flex-wrap: wrap to section, or you could just move the h2 above section...
section {
border: 1px solid red;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-around;
align-items: stretch;
}
h2 {
display: block;
border: 1px solid red;
width: 100%;
}
<section>
<h2>main title</h2>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
</section>
Or remove the flex properties from section and wrap the 3 column divs in a new element and apply the flex elements there.
.flex {
border: 1px solid red;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-around;
align-items: stretch;
}
h2 {
display: block;
border: 1px solid red;
}
<section>
<h2>main title</h2>
<div class="flex">
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
<div>
<h3>title</h3>
<ul>
<li>element 1</li>
<li>element 2</li>
<li>element 3</li>
<li>element 4</li>
<li>element 5</li>
</ul>
</div>
</div>
</section>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With