我在<article>
中有一个<div>
元素,article
有一个position: relative;
。
我将它向上移动了95px(bottom: 95px;
),但它在原始位置占据的空间仍然存在。我怎么能让它消失?当我将article
置于绝对位置时,也没有问题。但是我也需要把它固定在中间,margin: auto
不能与position:absolute
一起使用。
答案 0 :(得分:1)
使用负上边距而不是相对位置。像这样:
margin:-95px auto 0 auto;
正如CBroe已经指出的那样,为了让箭头显示在上面的图像上,当你设置{时,你需要添加position:relative
(但不是bottom
) {1}}。
z-index
从技术上讲,您甚至不需要position:relative;
z-index:1;
。
如果您对它的工作原理感到好奇,您需要了解CSS中绘制顺序的规则。 full details相当复杂,但the section on the z-index property中概述了基础知识。
在每个堆叠上下文中,以下按顺序绘制以下图层:
- 构成堆叠背景的元素的背景和边框。
- 子堆叠上下文具有负堆栈级别(最多为负数)。
- 流入的,非内联级别,未定位的后代。
- 未定位的花车。
- in-flow,内联级别,非定位后代,包括内联表和内联块。
- 堆叠级别为0的子堆叠上下文和堆栈级别为0的已定位后代。
- 具有正堆栈级别的子堆叠上下文(最少积极的第一个)。
醇>
默认情况下,图像(分类为内联级别,非定位后代)位于级别5,高于级别3的z-index
元素(非内联级别后代)。
通过向article
元素添加postion:relative
,您已将其设置为级别6的定位后代,从而将其向上移动到堆栈上方并再次移到图像上方。
请注意,如果您的article
包含自己的内嵌内容,则会显示在article
元素上方(它们都是内联的,但文章的内联内容会在树后面出现)但是img
背景和边框仍然会在下面绘制。
答案 1 :(得分:1)
我在
<article>
中有一个<div>
元素,article
有一个position: relative;
。 我将它向上移动了95px(bottom: 95px;
),但它在原始位置占用的空间仍然存在。
嗯,这就是假定的的相对定位 - http://www.w3.org/TR/CSS21/visuren.html#choose-position:
“当一个方框B相对定位时,计算下一个方框的位置,好像B没有偏移。”
因此,相对定位元素所需的原始空间将被重新保存。
我怎能让它消失?当我将
article
置于绝对位置时,也没有问题。但我也需要将其粘贴到中间,而margin: auto
将无法与position:absolute
一起使用。
您是否尝试过使用否定margin-top
向上“移动”元素?这应该适用于所有浏览器(不是石器时代)。您仍然可以将水平边距设置为auto
,以使元素居中。
.trdown {
/* everything else besides position and bottom stays */
margin:-85px auto 0 auto;
}
(如果这会破坏您要保留的容器元素底部的间距,那么也要给它一个padding-bottom
。)
答案 2 :(得分:0)
在没有先添加答案的情况下,我没有足够的声誉来添加评论。没有看到像Cody这样的代码,就很难提供帮助。
我认为你并不完全确定定位是如何运作的。当一个元素设置为position:absolute时,它将相对于它没有position:static的第一个父元素定位。如果没有这样的元素,则position:absolute的元素相对于<html>
(来自Codecademy)定位
如果你给一个元素相对定位并告诉它有一个10px的边距顶部,它不会从任何特定的东西向下移动十个像素 - 它向下移动十个像素,否则它将原来的位置。
请记住,如果您在另一个元素内部的元素上使用margin-auto,它将位于该元素的内部,而不是文档。默认情况下,Div是页面的整个宽度。