当它是多列布局中唯一的一个项目时如何居中

how to center an item when it's the only one in a multi-column layout

我正在将动态图像拉入 2 列布局。如果只有一张图片,我如何将它居中或将列折叠成一个?当前,单个图像放置在左列中。是否有仅 CSS 的解决方案?

相同的逻辑是否适用于列中的最后一项,如果它是该行中的唯一一项?

p{
  column-count: 2;
  column-gap: 0;
}

p>img{
  display: block;
  width: 100%;
  height: auto;
  border: 3px solid transparent;
  box-sizing: border-box;
}

感谢 Eric N 的回答和 column-span,以下添加的 CSS 将第一个也是唯一的项目居中2 列布局:

p>img:first-of-type:last-of-type{
  column-span: all;
  margin: auto;
  width: 50%;
}

此外,要在 2 列布局中定位 last 项目,如果它是其行中的唯一项目,我现在使用此:

p>img:nth-child(odd):last-of-type{
  column-span: all;
  margin: auto;
  width: 50%;
}

您的标记和 css 会有很大帮助。如果没有它,您可能只能通过使用以下方式定位单个元素:

img:first-of-type:last-of-type { 
    /* centering styles */ 
}

编辑:

看到 css 后,这变得非常棘手。我想到了这个令人畏惧的技巧:

p>img:first-of-type:last-of-type {
  position: absolute;
  left: 50%;
  width: 50%;
  transform:translateX(-50%);
}

这就完成了工作...除了 p 元素之后没有高度,因为它里面没有任何东西是静态的。我也没有看到清除它的明显方法。也许有人可以以此为基础?