2014-04-16 64 views
1

如果元素不是唯一的可見子元素,是否有任何方法(僅使用CSS)向元素添加填充內容?如果其他孩子被隱藏,那麼只能使用CSS子元素

到目前爲止,我有它使用:NOT和:獨生子女選擇:

div span:not(:only-child) { 
    padding-right:5px; 
} 

然而不幸的是,如果一個孩子存在,但它隱藏在它被認爲不是獨生子女和填充得到應用。

演示在這裏: http://jsfiddle.net/3Qr7v/

希望是有道理的。

由於

+3

我認爲'display:none'並不意味着它已從父母中移除,所以實際上父母在這兩種情況下總是有兩個孩子。 –

+1

你可以用腳本來做到這一點純CSS不會做到這一點。 – ProllyGeek

+0

無論如何,你的第一個'span'不是唯一的孩子,因爲有'br';但它是':only-of-type',你可以期望它是':only-child'。當然,只是挑剔,但它解釋了爲什麼我在我的答案中使用':nth-​​child(2)',否則你會預期':first-child'(我甚至會使用':first-of-type'除了[使用的jQuery版本不支持它](http://stackoverflow.com/questions/11745274/what-c​​ss3-selectors-does-jquery-really-support-eg-nth-last-child)) 。 – BoltClock

回答

1

有用於從隱藏或以其他方式不表觀元件區分可見的元素沒有CSS選擇。

由於您的演示使用jQuery的,還有就是:visible選擇其中makes it easy enough

$("div span:nth-child(2):not(:has(+ span:visible))").css("padding-right", "5px"); 

如果您不能使用jQuery或實際標記要複雜得多,你將不得不另謀出路,要麼通過修改標記或使用腳本來確定何時應用該填充。您的情況不能使用CSS解決。

相關問題