2020-10-29 CSS position:fixed 的元素如何居中

position:fixed 的元素脱离了文档流,不占据文档流的空间,这时 top、right、left、bottom是根据窗口为原点进行偏移定位的,也就是说它不会根据滚动条的滚动而进行偏移;

那么我们如何设置 position:fixed 的元素居中呢?
如果我们这么做:

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
}

效果如下:


image.png

fixed 的元素的左上角 居中了,但是我们要的是整个元素居中啊,怎么办呢

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
  margin-top: -50px; 
  margin-left: -100px;
}

设置 margin-topmargin-left 分别为高度和宽度的一半的负值。
这样就居中了,效果如下

image.png


这么做的前提是你知道元素的宽度和高度,如果不知道宽高呢?

没关系

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

The translate value for transform is based off the size of the element, so that will center nicely.

tarmsform属性的 translate 值是基于元素的大小,所以可以完美的居中啦~

ps: 如果只需要水平居中:

.centered {
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
}

参考

https://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容