CSS选择祖先的替代方法是啥

Posted

技术标签:

【中文标题】CSS选择祖先的替代方法是啥【英文标题】:What is the alternative to CSS-selecting an ancestorCSS选择祖先的替代方法是什么 【发布时间】:2013-05-08 18:06:56 【问题描述】:

CSS(3) 有后代选择器,例如td em color: red;,但显然是no ancestor selector。

那么,我应该怎么做而不是像 td border: 1pt solid red em; 这样的东西?即,如何在某些 (X)html 元素的祖先上设置样式?

注意:

javascript 与解决方法无关,可能是 XPath'y。

【问题讨论】:

据我了解,如果td 包含em,那么您想在其上设置border。仅通过 css 是不可能的。您是否对“解决方法”(如您标记的)中的 javascript/JQuery 解决方案持开放态度?如果是这样,那么有一个解决方案。 ***.com/questions/1251768/… 的副本。 【参考方案1】:

你可以等待 CSS4 选择器实现,然后再做

td! em 
    border: 1pt solid red;

见http://dev.w3.org/csswg/selectors4/。

或者……

var xpathresult = document.evaluate("//td[.//em]", 
    document, null, XPathResult.ANY_TYPE, null); 
while (e=xpathresult.iterateNext())
    e.classList.add("border");

见https://developer.mozilla.org/en-US/docs/DOM/document.evaluate。普通浏览器支持警告适用。

【讨论】:

带有感叹号td的元素是规则适用的元素,而不是选择器em最右边的元素。只是不要屏住呼吸寻求支持:)

以上是关于CSS选择祖先的替代方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

CSS加号选择器的CSS替代品?

使用 jQuery 和 CSS 选择器选择嵌套元素的共同父/祖先

CSS 选择:在祖先类中的第 n 个项目之间切换

[JavaWeb-CSS]CSS扩展选择器

19、css样式的优先级

在 IE 8 和 7 中使用较新的 CSS3 选择器的首选方法是啥?