我<article>
在 a 中有一个元素,<div>
并且article
有一个position: relative;
. 我将它向上移动了 95 像素 ( bottom: 95px;
),但它在原来位置占据的空间仍然存在。我怎样才能让它消失?当我对article
定位为绝对值做同样的事情时,没有问题。但是我也需要把它放在中间,并且margin: auto
不能与position:absolute
.
3 回答
代替相对位置,使用负的上边距。像这样的东西:
margin:-95px auto 0 auto;
正如 CBroe 已经指出的那样,要让箭头显示在上面的图像上,您需要position:relative
在bottom
设置z-index
.
position:relative;
z-index:1;
从技术上讲,您甚至不需要z-index
.
如果你很好奇为什么会这样,你需要了解 CSS 中绘制顺序的规则。完整的细节相当复杂,但在z-index 属性部分中概述了基础知识。
在每个堆叠上下文中,以下图层按从后到前的顺序绘制:
- 构成堆叠上下文的元素的背景和边框。
- 具有负堆栈级别(最负优先)的子堆栈上下文。
- 流入的、非内联级别的、非定位的后代。
- 未定位的浮动。
- 流入的、内联级的、非定位的后代,包括内联表和内联块。
- 堆栈级别 0 的子堆栈上下文和堆栈级别 0 的定位后代。
- 具有正堆栈级别的子堆栈上下文(最不积极的优先)。
默认情况下,图像(归类为内联级、非定位后代)位于第 5 级,高于您的article
元素(非内联级后代)的第 3 级。
通过将 a 添加postion:relative
到article
元素,您已将其设置为定位的后代,级别 6,因此将其移至堆栈的更高位置并再次位于图像上方。
请注意,如果您article
包含自己的任何内联内容,则该内容将显示在img
元素上方(它们都是内联的,但文章的内联内容在树顺序的后面),但article
背景和边框仍会在下面绘制.
我没有足够的声誉来添加评论而不先添加答案。没有看到像 Cody 这样添加的代码,很难提供帮助。
我认为您并不完全确定定位是如何工作的。当一个元素设置为 position: absolute 时,它会相对于它拥有的第一个没有 position: static 的父元素进行定位。如果没有这样的元素,则具有 position: absolute 的元素相对于<html>
(来自 Codecademy)定位
如果你给一个元素相对定位并告诉它有 10px 的 margin-top,它不会从任何特定的东西向下移动 10 个像素——它会从原本应该是的位置向下移动 10 个像素。
请记住,如果您在另一个元素内部的元素上使用 margin-auto,它将在该元素内部居中,而不是在文档中。但默认情况下,Div 是页面的整个宽度。