html - 需要解释 z-index 行为

标签 html css

<分区>

我的 CSS 代码有两个方 block ,绿色(小,子)和红色(大,父)。我想将小盒子的下半部分隐藏在大盒子下面,这样就看不到重叠。

我的以下代码不起作用,但如果我删除红色框上的 z-index,它就会起作用。

我无法理解这种行为。根据我的理解,无论父级的 z-index 是什么,子级上的任何 -ve z-index 都会将其置于父级之下。 有误吗?

.parent {
  background:red;
  height: 100px;
  width: 100px;
  position: absolute;
  z-index:1;/*comment this line to make it working*/
}

.child {
    height: 10px;
    width: 10px;
    position:absolute;
    background:green; 
    top: 0%;
    left: 50%;
    transform: translateY(-50%);
    z-index: -1;
}
<div class="parent">
    <div class="child"></div>
</div>

预期结果:

enter image description here

最佳答案

通过给父元素一个它自己的z-index,你建立了一个新的stacking context。 .

这会导致子级的 z-index 被限制在父级内部,而不是 html 元素。

关于html - 需要解释 z-index 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57452410/

上一篇:css - 如何确保列不会增加超过宽度百分比

下一篇:html - 需要 CSS 帮助 - 媒体查询阻止布局变化 - flex?

相关文章:

javascript - 百分比图表 CSS3 动画,在 View 上开始,滚动后,而不是在页面加载时

javascript - 如何在 d3.js 中获取不同的值?

html - HTML5 Canvas.toDataURL 的默认质量是多少?

javascript - 滚动上的视差元素

javascript - 从不同字段以不同形式向服务器提交数据

javascript - 想要使用 Jquery 在 <div> 中仅显示第一类

html - 为什么我的动画不播放?

css - Protractor - 元素不可见(但手动检查时可见)

html - 不同浏览器的 CSS3 渲染不同

html - Angular ng-if 更改跨度文本