Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当CSS本质上是层叠的时,`:n最后一个子项`是如何工作的?_Css_Dom_Css Selectors_W3c_Css Cascade - Fatal编程技术网

当CSS本质上是层叠的时,`:n最后一个子项`是如何工作的?

当CSS本质上是层叠的时,`:n最后一个子项`是如何工作的?,css,dom,css-selectors,w3c,css-cascade,Css,Dom,Css Selectors,W3c,Css Cascade,我学到了CSS,如下所示: 它只能在DOM中走得更远或更深 这就是为什么我们没有像下一个选择器那样的前一个选择器(selector+nextLM),或者我们没有父选择器,因为我们不能从CSS引擎的角度在DOM树中后退 所以这里应该有两个不同的问题。如果我们接受上述解释,我不明白:nth-last-child()如何工作。它在DOM树中基本上是向后的,因为它从元素的末尾开始 如果我们不接受我们的介绍,那么为什么我们没有一个前面的元素选择器呢 提前感谢您抽出时间。想象一下它就像一个柜台。扫描dom树

我学到了CSS,如下所示:

它只能在
DOM
中走得更远或更深

这就是为什么我们没有像下一个选择器那样的前一个选择器(
selector+nextLM
),或者我们没有父选择器,因为我们不能从CSS引擎的角度在DOM树中后退

所以这里应该有两个不同的问题。如果我们接受上述解释,我不明白
:nth-last-child()
如何工作。它在DOM树中基本上是向后的,因为它从元素的末尾开始

如果我们不接受我们的介绍,那么为什么我们没有一个前面的元素选择器呢


提前感谢您抽出时间。

想象一下它就像一个柜台。扫描dom树时,您会跟踪元素的数量,以便以后可以使用
nth-child()
nth-last-child()
通过索引轻松识别它们。从技术上讲,你不会后退。@TemaniAfif-hmm,我说得对吗?它首先扫描整个
DOM
,然后开始从上到下遍历。我的意思是,当我们打开一个网站时,浏览器CSS引擎就是这样做的。当我们
.append()
另一个元素时,浏览器会从一开始就重新开始这个过程?我不知道所有的事情都是如何在幕后完成的,但我知道的是,以前的选择器的概念需要大量的计算,而不是简单的
n-last-child()
只需要元素的索引。遗憾的是,我们的CSS选择器专家不再积极主动地向您提供详细信息explanation@TemaniAfif我真的很感谢你提供的信息,没有时间写一个正确的答案,但基本上是“因为表现”。没有人能解释为什么这很重要。即使定义了一个
:has()
选择器,它仍然根据这个“perfs”参数,在任何地方都没有实现…:最后一个孩子没那么复杂,只需要抓住所有的孩子,从最后一个走过去,但即使这样。