以下是fiddle,我有2个div,一个是外框,另一个是innerBox
,点击innerBox
我需要更改外部box
的属性
从css3开始它不可能,css4中有什么可用吗?
答案 0 :(得分:12)
可能没有CSS4这样的东西,但有#34; Selectors Level 4"这样的东西。这是下一代选择器的未完成规范, 在规范中包含父选择器。或者更确切地说,一个"主题"选择器。
规范文档在此处:http://dev.w3.org/csswg/selectors/
但请注意,它是一个 dev 网址,该规范仍然是一项正在进行的工作。
在实际代码中,主题选择器可能如下所示:
div > !.foo > span
这将选择一个类foo
的元素,该元素是div
的子元素,并且作为子元素在其中包含span
。
然而正如我所说,这不是一个完成的规范(实际上,主题选择器的语法在此过程中已经多次更改,并且可能仍然可能随时进行进一步更改)。它在任何浏览器中都没有实现,并且不会期望它很快就会出现。
此外,即使/当选择器级别4在浏览器中实现时,规范也明确规定某些选择器可能因性能原因而被排除在实现之外(它们区分了快速选择器和'选择器和“完整的选择器组”。主题选择器就是其中之一:如果规范保持原样,那么浏览器就没有强迫将它添加到CSS中。在这种情况下,他们可能会将其添加到Javascript,即document.querySelector()
之类的方法,而不是CSS本身。这不会以任何方式帮助你,因为它已经可以通过javascript找到父元素了。 (有关详细信息,请参阅上面链接的规范中的第2.1节)。
所以简短的回答是:不,这是不可能的。未来可能有可能,但现在对你没有帮助,即使将来也可能会出现停止警告。
(您可能还想阅读this article,这是一个比实际规范更具有最终用户友好性的文档。但是您会注意到,自撰写本文以来,主题选择器语法已经发生了变化)
答案 1 :(得分:2)
Liam指出,没有CSS4。
忘记父选择器,因为它带来了许多新问题。
有一个原因,为什么它不存在。
使用父选择器会非常容易意外造成 一个文档范围的grovel。人们可以并且将会滥用这个选择器。 支持它是给人们一大堆绳索自己挂起来 与
和
我所描述的在技术上并不是不可能的。事实上,相当的 相反。这只意味着我们必须处理性能问题 使用这种功能的含义。
但你可以轻松地使用js甚至使用jquery。就像在jquery中调用$('a').parent();
以获取<a>
标记的父项一样简单。
抬头!选择器等级4正在实施此功能。感谢TylerH指出这一点。