为什么:不是(> h1)不可能?纯CSS中的任何解决方法?

时间:2012-02-20 16:47:28

标签: css css3 css-selectors

我必须根据选择器中的子(h1)元素在选择器后面设置<p>的边距。像这样:

selector:not(>h1) + p
{
    margin: 10px 0 0 0;
}

HTML:

<a><h1>test</h1></a>
<p>test</p>

<a>是我的选择器,只有当a包含<h1>时,它(或后面的p)才能获得边距。并且不可能将余量设置为h1。

这不起作用:有没有办法在纯CSS中执行此操作? 我认为这是CSS3选择器中缺少的东西。

2 个答案:

答案 0 :(得分:1)

你的问题/例子不太清楚我害怕但听起来你正在描述一个'父'选择器,而CSS目前只适用于儿童/后代。我相信在父母选择器的管道中有工作,但在那之前我不可能害怕。

如果

ħ

编辑:

同样,我无法确切地说出你所追求的是什么,但也许尝试这样的事情:

<h1><a></a></h1>

h1 a{
    display:block
    margin-bottom:20px; /* Adjust as necessary */
}
h1 + p{
    margin-top:-20px; /* Same as above */
}

答案 1 :(得分:1)

绝对没有办法让你的选择器不使用jQuery&#39;:has&#39;,在这种情况下,我会写这个查询:

$('selector > p:not(selector > p:has(h1))');

如果嵌套函数甚至可以在jQuery中工作

CSS无法工作的原因是因为没有:具有功能,并且:包含已被删除。