Html 相对于未定位的父元素放置绝对位置的元素
一段时间以来,我对CSS定位的理解是,具有Html 相对于未定位的父元素放置绝对位置的元素,html,css,css-position,Html,Css,Css Position,一段时间以来,我对CSS定位的理解是,具有位置的元素:绝对和左,顶部,指定的右或下使用与最近的祖先元素相对的编号放置,位置为位置:relative,如果没有这样的祖先元素,则使用与文档相对的编号 在创建一个测试脚本向某人解释CSS定位时,我遇到了在我看来非常尴尬的行为。正如您所看到的@,我将.child设置为位置:绝对,它是父。父没有位置,它是父。父具有位置:相对。我已将.child设置为左:0和顶:0。但是孩子的位置相对于.parent而不是.grand\u parent。为什么会这样 我对C
位置的元素:绝对
和左
,顶部
,指定的右
或下
使用与最近的祖先元素相对的编号放置,位置为位置:relative
,如果没有这样的祖先元素,则使用与文档相对的编号
在创建一个测试脚本向某人解释CSS定位时,我遇到了在我看来非常尴尬的行为。正如您所看到的@,我将.child
设置为位置:绝对,它是父。父没有位置,它是父。父具有位置:相对。我已将.child
设置为左:0
和顶:0
。但是孩子的位置相对于.parent
而不是.grand\u parent
。为什么会这样
我对CSS定位的理解有缺陷吗?或者,我是在做一些愚蠢的事情吗?您的应用程序正在按预期工作,因为您在css中的级联有问题。子项是
,因此具有`中为div定义的样式,其中包括边距。尝试将此项添加到子项:
#absolute_relative .child {
margin: 0;
}
注意:这似乎是一种奇怪的行为,因为孩子和父母都有相同的边界,因此似乎孩子是相对于父母的,但事实并非如此
.您的css中的层叠有问题,因此它按预期工作。子项是
,因此具有`中为div定义的样式,其中包括边距。尝试将此项添加到子项:
#absolute_relative .child {
margin: 0;
}
注意:这似乎是一种奇怪的行为,因为孩子和父母都有相同的边界,因此似乎孩子是相对于父母的,但事实并非如此
.您的理解是正确的,并且在您的样本中表现相同。它是相对于父对象而不是相对于祖辈对象定位时使其显示的边距和百分比宽度和高度
您可以尝试在此处设置“右”和“下”属性,并清楚地看到它们之间的区别
#absolute_relative .child{
position: absolute;
width: 25%;
height: 25%;
right: 0px;
bottom: 0px;
}
还有一把小提琴清楚地展示了这种行为:您的理解是正确的,在您的样本中也表现出同样的行为。它是相对于父对象而不是相对于祖辈对象定位时使其显示的边距和百分比宽度和高度
您可以尝试在此处设置“右”和“下”属性,并清楚地看到它们之间的区别
#absolute_relative .child{
position: absolute;
width: 25%;
height: 25%;
right: 0px;
bottom: 0px;
}
这里还有一把小提琴,清楚地展示了这种行为: