* flex box stuff */
display: flex;
/* this makes it fill from left to right, leaving empty space on the right */
/* justify-content: flex-start; */
/* this makes it all fill evenly, but then partially filled rows look weird */
justify-content: space-evenly;
flex-direction: row;
flex-wrap: wrap; /* this makes it so there's more than 1 row */
row-gap: 4vh;
column-gap: 4%;
/* flex box end */
/* a lot of this has been from trying out many methods + chatGPT */
figure {
flex-grow: 1;
width: calc(100% / 5vw);
/* width: calc(33.33% - 2%); product of ChatGPT no clue why it recommended this */
max-width: 5vw;
margin-left: calc(100% / 5vw);
margin-right: calc(100% / 5vw);
text-align: center;
font-weight: 600;
font-style: italic;
}
/* Every icon's/figure's image will be the same size so this is perfect */
figure img{
width: 100%; /* If I set the width & height to 100% that tells it to use the full 6vw/vh of the viewport*/
height: auto; /* keep at auto that way it keeps the aspect ratio */
max-width: 5vw;
max-height: 5vh;
border-style: groove;
border-width: .2rem;
}
I have been trying for hours now to make a flexbox that has these attributes for fitting figures:
- if a row is full of items(this case images) there is equal spacing “x” between items AND the spacing between the left-most item to the left-border & the right-most item to the right-border is the same.
- if a row is only partially full then it should fill in from left-to-right leaving empty space on the right-hand side of the partially full row. The spacing between items should be the same “x” as above
- the distance between the left-most item to the left-border of a full row & a partially row should be the same.
- The content area should adjust dynamically with the screen so on a mobile phone there might be 5 items per row, on an ultrawide 20 items per row.
The issue I’m getting is I need a mix of properties from space-evenly
& flex-start
. I want the fact that space-evenly
creates a symmetrical row with equal distances to borders & between objects. But I want the fact that flex-start
fills left-to-right & will leave empty space to the right. I’ve tried a number of width: calc()
solutions but I can’t seem to make a substantial enough change.
What I get with space-evenly is this, partially filled rows don’t line up with full ones:
| 0 0 0 0 0 0 0 |
| 0 0 0 0 0 |
with flex-start full rows can be off-center/off-kilter/not-symmetrical
| 0 0 0 0 0 0 0 | this is an exaggeration of the distance between right-border to item
| 0 0 0 0
Kenneth ma is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1