CSS中重叠元素的默认规则是什么?



我试图通过W3Schools自学HTML和CSS,并且在那里提到,如果没有指定Z值,则将在HTML代码中放置的元素将在顶部显示在顶部。。但是,在他们的示例中,如果我们评论图像的z索引,以便没有指定图像,则图像仍然显示在顶部。从底部到顶部的顺序不应该是标题,然后是图像,然后是段落,因为这是代码中指定的顺序?我不知道他们的特殊重叠规则吗?

P.S。我发现了这个问题,它引用了文本顶部出现的另一个图像的实例,即使文本是在HTML中持续的,但没有任何理由对此行为(而是建议使用适当的Z-Index代码)。但是,我想知道为什么会发生这种情况,而不是如何使文本以z索引顶部。

那是因为图像绝对位置。从规格,

在每个堆叠上下文中,以下层被涂在 返回订单:

  1. 形成堆叠上下文的元素的背景和边界。
  2. 儿童堆叠堆叠级别的堆叠环境(最负首先)。
  3. 流量,非内线,非位置的后裔。
  4. 无位置的浮子。
  5. 河流,内联,非位置的后裔,包括内联表和内联块。
  6. 带有堆栈级别0的儿童堆叠上下文和带有堆栈级别0的位置后代。
  7. 儿童堆叠堆叠级别的堆叠环境(首先至少为正)。

如果您删除了z-index,则该图像在步骤3的段落前的步骤6上绘制,并在步骤5处段落的文本。

如果两个元素都有默认的z index(相当于0),则绝对位置的一个将在一个没有定位设置的一个上方。

这是我刚刚阅读的规格部分:https://www.w3.org/tr/html5/embedded-content-0.html#the-img--元素

我对此的解释是,尽管浏览器将从文档的顶部到底部渲染元素,但是在加载文档后,必须收到图像元素的src,因为显然需要额外的http要求。这意味着图像的内容是在您的常规元素为之后渲染的,因此在没有指定z索引之后,它在顶部呈现。

因此,换句话说,您的浏览器首先通过HTTP请求接收到服务器的HTML文档。该HTML文档具有带有src属性的<img>标签,然后将另一个HTTP请求发送给服务器,以获取该图像标签的实际文件。没有z-index集,浏览器将简单地在其他元素的顶部绘制该图像。

这是我最好的猜测。我尝试玩一些实验,然后使用检查员查看图像上是否有默认的z-index,但没有。

编辑:

在规格中指向的Oriol指向W3SCHOOLS示例以及您链接到的其他代码片段:图像重叠div

在这种情况下,看起来<img>元素将在线,因此将在步骤5中绘制,而<div> S将在步骤3中绘制。

最新更新