我有一个非常具体的问题,虽然可以通过更改 HTML 或使用负边距/绝对定位轻松解决,但在这种情况下两者都不可能。
简而言之,我需要将比“第一个孩子”元素大的“第二个孩子”元素定位在“包装器”的坐标空间中。这可能是不可能的,但能够这样做将大大降低我们需要执行的一些 javascript 计算所需的复杂性。
在正常情况下,我们会将“第一个孩子”设置为相对或绝对位置,以便将“第二个孩子”定位在其父级的坐标空间中。我需要扭转这种行为。因此,我天真地假设“第二个孩子”将定位在“包装器”上,尝试在“第一个孩子”上进行静态定位。(left:0; top:0; 将导致“第二个孩子”被定位到包装器的左上角)。虽然这会正确定位元素,但它会删除“第一个孩子”上所需的剪辑集并显示整个“第二个孩子”。
所以总结一下。如何将“第二个孩子”元素定位在“包装”元素的坐标空间上,以便top:0; left:0;
导致“第二个孩子”被推到左上角,尽管它是“第一个孩子”元素的孩子,而overflow:hidden;
仍然保持在“第一个孩子”上设置的“剪辑”行为。
免责声明:
为了下面代码的可读性,我使用了以数字开头的 ID。这不能在实际代码中完成,但在这个问题中引用元素要容易得多。
HTML:
<div id="wrapper">
<div id="1st-child">
<div id="2nd-child">
</div>
</div>
<div>
CSS:
#wrapper {
position:fixed;
width:1000px;
height:1000px;
top:0;
left:0;
}
#1st-child {
margin-left : 200px;
margin-top : 200px;
width: 300px;
height: 200px;
position:static;
overflow: hidden;
}
#2nd-child {
position:absolute;
top:0;
left:0;
width:750px;
height:600px;
}