传统方法.center { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); }
试图在居中元素周围保留一些空白空间,这通常会导致居中元素的宽度不理想,例如小于应有的宽度。
@proseosoc 的答案在这种情况下效果很好,并将居中元素的范围扩展到视口边的末端。但是,居中的元素会以包括滚动条在内的整个视口为中心。但是,如果您的用例需要在没有滚动条的情况下在空间中居中元素,则可以使用此修改后的答案。这种方法也类似于前面提到的传统方法,即在没有滚动条的情况下将元素居中。
水平居中
.horizontal-center {
position: fixed;
left: calc((50vw - 50%) * -1); /* add negative value equal to half of the scrollbar width if any */
transform: translate(calc(50vw - 50%));
}
垂直居中
.vertical-center {
position: fixed;
top: calc((50vh - 50%) * -1);
transform: translate(0, calc(50vh - 50%));
}
水平和垂直居中
.center {
position: fixed;
left: calc((50vw - 50%) * -1);
top: calc((50vh - 50%) * -1);
transform: translate(calc(50vw - 50%), calc(50vh - 50%));
}