在CSS中,我可以選擇一個不包含其他元素的元素嗎?我可以選擇一個不包含其他元素的元素嗎?
例如:
<div>
<p>ABC</p>
<p>
<q>123</q>
</p>
<p>ABC</p>
</div>
我想爲每個p
元素的CSS,而不是包含q
的元素。
這可能嗎?
在CSS中,我可以選擇一個不包含其他元素的元素嗎?我可以選擇一個不包含其他元素的元素嗎?
例如:
<div>
<p>ABC</p>
<p>
<q>123</q>
</p>
<p>ABC</p>
</div>
我想爲每個p
元素的CSS,而不是包含q
的元素。
這可能嗎?
如果這是你的HTML看起來像什麼,你可以使用的方法,如本...
div p {
/* styles */
}
div p q {
/* styles to *undo* previous styles, plus additional ones */
}
您會發現,我在p元素上設置了一個頁邊距,我不希望p> q對於我來說,改變或刪除包含q的p元素也不方便,如上所述,我可以使用p:empty selector? –
@PatrickKeane如果沒有元素或文本節點,但他們在你的例子中。 – alex
我有一個利潤率上,我不想在p>的p元素設置q元素。
不幸的是,這僅僅是CSS不可能的。但是,您可以用JavaScript實現這一目標(下面的例子中使用jQuery):
$('p:not(:has(q))')
有了這個,那麼你可以使用.css()
修改CSS:
$('p:not(:has(q))').css({
'margin': '5px'
});
這裏是一個JSFiddle demo。
這還沒有被標記爲jquery - 我對我的回答做出了同樣的錯誤 – Pete
jQuery會很有用,但我正在爲移動開發,並且我將盡可能多的腳本工作留給服務器儘可能在一邊 –
@PatrickKeane如果你將工作交給服務器,你可以簡單地不添加一個單獨的類給有(或沒有)'q'子元素的元素嗎? –
好地方!不幸的是,一些p元素包含鏈接標籤:( –
我已經取消刪除了基於JavaScript的答案,因爲這可能是您唯一的解決方案。 –