CSS选择无子女,但并非空CSS选择无子女,但并非空(CSS Selector for No-Chi

2019-05-12 05:09发布

我要选择下面的HTML片段BONKERS。 它的区别是,它独自在<code>块,而它的所有兄弟含有<a>的。 :empty是显而易见的选择,但由于文本节点将无法正常工作。 我想我知道这个东西,但是这是推动我,好了,疯狂。

 <ul class="Reference">
    <li class="level4">
        <code class="active-voice">
            <a href="some/url/x" version="2">
                mauve 
            </a>
    </code>
    <li class="level8">
        <code class="active-voice">
            BONKERS 
        </code>
    </li>
    <li class="level9 subclass">
        <code class="active-voice">
            <a href="some/url/c" version="2">
                cerise 
            </a>
    </code>
    </li>
</ul>

我需要一个纯CSS的解决方案(JS是不是一种选择),并具备源HTML无法控制。

FEH!

Answer 1:

你可以按照这个方法。 风格code通过任何你想要的CSS元素,然后重置这些CSS样式这是在继承anchor的风格,即:

演示: http://jsfiddle.net/GCu2D/1062/

CSS:

code {
    color: green;
    font-weight: bold;
}
code a{
    color: red;/*Reset any inheritable css*/
    font-weight: normal; /*Reset any inheritable css*/
}

您可能不需要重置所有样式,因为不是所有的款式都被继承anchorcode

这是一个解决方案,你真的可以考虑一下。



Answer 2:

根据你打算申请什么CSS属性,您可能会或可能无法做到这一点。 如果你要申请什么样color ,例如,你可以简单地将其设置为所有code元素和重置在code a ,假设所有的文本信息包含在中a和中在它之外没有扩散code 。 这将只为性能屈指可数工作,但是(主要是字体的)。

否则,有没有纯CSS这里的路多了,如果你想选择code不包含元素a孩子。 jQuery有code:not(:has(> a))或为任意E没有子元素可言,元素E:not(:has(> *))但是,这不是马上就要CSS随时随地 ,和选择器4不适用于“没有子元素的元素”提供别的。

“FEH!” 是正确的。



文章来源: CSS Selector for No-Children-But-Not-Empty