Reputation: 1239
How can I move the content of class ".content" to the centre of its parent class ".primary"? I did try to set a "width:10px" but it doesn't do anything. All I want, is for the children "div" of parent class ".primary" to move to its centre with a specific width. Right now, they spread across its parent width;
.container {
display:flex;
flex-flow:row;
flex-wrap: wrap;
}
.item {
border:1px solid red;
padding:5px;
width:200px;
flex-grow:1;
}
.border {
border:1px solid blue;
}
.primary {
order:-1;
flex-basis: 100%;
display:flex;
flex-direction:row;
}
.content {
flex-grow:1;
border:1px solid blue;
width:10px;
}
<div class="container">
<div class="item"> Box 1 </div>
<div class="border"></div>
<div class="item"> Box 2 with medium width</div>
<div class="border"></div>
<div class="item primary">
<div class="content">Content 1 </div>
<div class="content">Content 2 </div>
<div class="content">Content 3</div>
</div>
</div>
Upvotes: 0
Views: 39
Reputation: 1785
Here I have adjusted content div
width by applying flex-basis: 20%;
and remove flex-grow:1;
from .content
class. The reason here is flex-grow:1;
grows element width to fullwidth of it's parent element. And also add justify-content: center;
for .primary
class, which makes .content
boxes center aligned.
.container {
display:flex;
flex-flow:row;
flex-wrap: wrap;
}
.item {
border:1px solid red;
padding:5px;
width:200px;
flex-grow:1;
}
.border {
border:1px solid blue;
}
.primary {
order:-1;
flex-basis: 100%;
display:flex;
flex-direction:row;
justify-content: center;
}
.content {
/*flex-grow:1;*/
flex-basis: 20%;
border:1px solid blue;
width:10px;
}
<div class="container">
<div class="item"> Box 1 </div>
<div class="border"></div>
<div class="item"> Box 2 with medium width</div>
<div class="border"></div>
<div class="item primary">
<div class="content">Content 1 </div>
<div class="content">Content 2 </div>
<div class="content">Content 3</div>
</div>
</div>
Upvotes: 1
Reputation: 4341
To align items in a flex container you should use justify-content
. That being said, with flex-grow set to 1 your items will ignore your width setting and grow to fill the parent. Below is an example with the width of 10px and aligned to the center
.container {
display:flex;
flex-flow:row;
flex-wrap: wrap;
}
.item {
border:1px solid red;
padding:5px;
width:200px;
flex-grow:1;
}
.border {
border:1px solid blue;
}
.primary {
order:-1;
flex-basis: 100%;
display:flex;
flex-direction:row;
justify-content: center;
}
.content {
border:1px solid blue;
width:10px;
}
<div class="container">
<div class="item"> Box 1 </div>
<div class="border"></div>
<div class="item"> Box 2 with medium width</div>
<div class="border"></div>
<div class="item primary">
<div class="content">Content 1 </div>
<div class="content">Content 2 </div>
<div class="content">Content 3</div>
</div>
</div>
Upvotes: 3