Reputation: 842
I'm pulling dynamic images into a 2-column layout. If there's only one image, how would I center it, or collapse the columns into one? Currently a single image is placed in the left column. Is there a CSS-only solution?
Would the same logic apply to the last item in a column, if it's the only one in its row?
p{
column-count: 2;
column-gap: 0;
}
p>img{
display: block;
width: 100%;
height: auto;
border: 3px solid transparent;
box-sizing: border-box;
}
Thanks to Eric N's answer and column-span, the following added CSS centers the first and only item in a 2-column layout:
p>img:first-of-type:last-of-type{
column-span: all;
margin: auto;
width: 50%;
}
Furthermore, to target the last item in a 2-column layout, if it's the only item in its row, I'm now using this:
p>img:nth-child(odd):last-of-type{
column-span: all;
margin: auto;
width: 50%;
}
Upvotes: 3
Views: 129
Reputation: 2206
Your markup and css would help greatly. Without it though, you may be able to target a single element only by using:
img:first-of-type:last-of-type {
/* centering styles */
}
Edit:
After seeing the css, this becomes super tricky. I came up with this cringe-y hack:
p>img:first-of-type:last-of-type {
position: absolute;
left: 50%;
width: 50%;
transform:translateX(-50%);
}
Which gets the job done...except that p element has no height afterward since nothing inside it is static. I don't see an obvious way to clearfix it either. Maybe someone can build on this idea?
Upvotes: 3