【发布时间】:2021-09-13 14:45:58
【问题描述】:
我正在努力学习前端 Web 开发的基础知识,但我很难理解为什么 body::before 会如此行事。我有以下 CSS 代码:
body::before {
content: "";
position: fixed;
width: 100%;
height: 100%;
background: linear-gradient(rgba(0, 0, 0, 0), rgba(255, 255, 0, 0.45)), url(https://cdn.pixabay.com/photo/2015/03/03/05/56/avenue-656969_960_720.jpg);
background-repeat: no-repeat;
background-size: cover;
z-index: -1;
}
这样,背景将显示为向左下角移动了一些像素(CodePen screenshot),并且仅当上/下和左/右设置为 0 时才会覆盖整个屏幕。为什么@ 987654324@ 位置的行为是这样的,但正常身体的位置不是吗?另外,为什么body::before即使设置为相对位置也不会出现?
【问题讨论】:
-
参见
::before作为 body 的子元素。为了使其覆盖其父级的全部大小,需要将其从文档流中取出:因此position: relative将不起作用。需要 top/bottom/left/right 来定位元素的边缘。 -
您的
<body>仍然具有默认的margin样式。使用body {margin: 0;}将其删除。这就是为什么你有白色边框
标签: css