想象以下布局,其中点代表框之间的空间:
[Left box]......[Center box]......[Right box]
当我移除右边的框时,我希望中心框仍然位于中心,如下所示:
[Left box]......[Center box].................
如果我删除左框,情况也是如此。
................[Center box].................
现在,当中心框中的内容变长时,它将在保持居中的同时占用尽可能多的可用空间。左右框永远不会收缩,因此当没有剩余空间时 overflow:hidden
和 text-overflow: ellipsis
将生效以打破内容;
[Left box][Center boxxxxxxxxxxxxx][Right box]
以上都是我的理想情况,但我不知道如何实现这种效果。因为当我像这样创建一个弹性结构时:
.parent {
display : flex; // flex box
justify-content : space-between; // horizontal alignment
align-content : center; // vertical alignment
}
如果左右框的大小完全相同,我就会得到想要的效果。然而,当两者之一来自不同尺寸时,居中框不再真正居中。
有没有人可以帮助我?
更新
A justify-self
会很好,这将是理想的:
.leftBox {
justify-self : flex-start;
}
.rightBox {
justify-self : flex-end;
}
原文由 Mark 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个使用 flexbox 使中间项目居中的方法,无论兄弟姐妹的宽度如何。
主要特征:
使用嵌套的 flex 容器和
auto
边距:它是这样工作的:
.container
) 是一个弹性容器。.box
) 现在都是一个弹性项目。.box
项目被赋予flex: 1
以平均分配容器空间( 更多细节)。justify-content: center
。span
元素都是居中的弹性项目。auto
边距将外部span
左右移动。您也可以放弃
justify-content
并专门使用auto
边距。但是
justify-content
可以在这里工作,因为auto
边距总是优先的。