Javascript 人们说css中没有父选择器是什么意思?

Javascript 人们说css中没有父选择器是什么意思?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,例如,假设我有一个类似于下面的HTML。我不是在选择ul的父元素吗 ul margin: 50px ul.test li hello li how are u 为了理解它们的含义,您需要理解在CSS中选择意味着什么(parent很容易:) 选择器是指CSS应用的元素。因此,使用CSS,如果您有一个选择器(任意选择器),则无法对任何父零件应用更改。只能将其应用于其最后一部分。给孩子(或者,在某些情况下,给直接或远处的兄弟姐妹)。 (这里的简单规则是,决定样式将应用于哪个元素的部分始

例如,假设我有一个类似于下面的HTML。我不是在选择ul的父元素吗

ul
  margin: 50px

ul.test
  li hello
  li how are u

为了理解它们的含义,您需要理解
CSS
中选择意味着什么(parent很容易:)

选择器是指
CSS
应用的元素。因此,使用
CSS
,如果您有一个选择器(任意选择器),则无法对任何父零件应用更改。只能将其应用于其最后一部分。给孩子(或者,在某些情况下,给直接或远处的兄弟姐妹)。
(这里的简单规则是,决定样式将应用于哪个元素的部分始终是选择器的最后一部分)

让我们以这个简单的选择器为例:

ul { 
  /* rules apply to all ul */
}
我可以制定一个规则来设计所有的孩子:

ul > * { 
    /* rules apply to * (all children of ul) */
}
但我无法制定规则来设置其父项的样式:

* < ul { 
  /* rules don't apply. this is invalid */ 
}
样式始终应用于选择器中的最后一项,而不应用于父项之一

这就是为什么
CSS
中没有父选择器的原因。不能基于选择父对象的一个子对象来设置父对象的样式。你需要选择它。找到它了吗


见鬼,我给你举个例子

考虑一下这个标记,但是想象一下它是复杂的10倍(假设有一群人从中添加/删除部分,这样它就可以有巨大的深度):


现在,请创建一个
CSS
,它将使
的所有父级(一个单级祖先)具有红色背景,无论它们位于
DOM
的何处。你能吗?
这里有个消息:你不能

他们最接近做到这一点的时候是有人提出了选择器,但它被拒绝了。这个选择器需要
CSS
解析器返回,并且总是向前。这就是为什么它很快,无论是设备/浏览器/系统。CSS总是很快


因为它没有
:has()
选择器(或者
可能的重复项,您可以选择恰好是其他元素父元素的元素(例如您的
ul
),但是没有选择器来获取与某个选择器匹配的元素的父元素(即,没有类似于li
的父元素)很抱歉,我仍然不明白:/n不,您正在选择元素ul。您可以选择它的子元素,例如
ul li
,但您不能选择ul的父元素(可能是div、span或任何其他元素),例如
div
(不存在且不起作用)好的,我不能给div一个类然后选择这个类吗?谢谢你的回答,这非常有帮助,但是如果我想给我的ul的父级设置样式,让我们假设它是一个div?我不能在css中设置div的样式吗?“这就是为什么css中没有父级选择器的原因。”-这并不是解释为什么没有父选择器。当然可以在CSS规范中添加一个并在浏览器中实现它。只是到目前为止还没有出现这种情况。我相信我已经触及了这一点,@nnnn。请参阅我答案的最后一段。| |欢迎(访问),eti。谢谢你,andrei,这真是太好了,这个例子真的解释了它。非常感谢。@andrei Gheorghiu:我认为:has()在这一点上不值得一提。除了jQuery和其他非CSS库之外,没有任何实现,在过去的12个月里也没有任何进展。
* > ul {
  /* rules apply to any ul that is a child of * (any element) */
}
<div>
  <whatever></whatever>
</div>
<span>
  <whatever></whatever>
</span>
<ul>
   <li>
     <whatever></whatever>
   </li>
   <li></li>
   <li>
     <whatever></whatever>
   </li>
 </ul>