2015-12-08 56 views
2

我有這樣的HTML標籤通過CSS選擇器選擇在所有的HTML標籤的第一個和最後一次出現

<div> 
    <ol> 
    <li>First</li> 
    <li>Foo</li> 
    <li>Foo</li> 
    <li>Foo</li> 
    </ol> 
</div> 
<div> 
    <ol> 
    <li>Foo</li> 
    <li>Foo</li> 
    <li>Foo</li> 
    <li>Last</li> 
    </ol> 
</div> 

我想改變第一李在html標籤的背景和過去裏所有。我怎樣才能做到這一點?

我用這個的CS這是行不通的,因爲我預料

li:first-child { 
    background: #900 
} 

li:last-child { 
    background: #900 
} 

P.S我所需要的解決方案適用於IE8 +。

jsfiddle

+0

您是否擁有對HTML輸出的控制權? – gfullam

+1

我不認爲你可以在沒有JS的情況下實現所有用例。但是,這適用於你的例子:http://jsfiddle.net/webtiki/gu2sqctc/ –

+1

我想你會需要JS,因爲這純粹是因爲你需要IE8的支持。 – Harry

回答

1

考慮到IE8的支持,一個jQuery的解決辦法是最好的IMO:

http://codepen.io/anon/pen/wMBxYO

$(document).ready(function() { 
    $('ol:first li:first, ol:last li:last').css('background', 'pink'); 
}); 
2

假設你的HTML結構不會改變,你可以這樣做:

div:first-child li:first-child { 
    background: #900;} 

div:last-child li:last-child { 
    background: #900;} 
+0

之前已經接受了,似乎最後一個孩子在ie8中不支持http://www.quirksmode.org/css/selectors/ – RezaRahmati

+0

是的,我意識到現在,對不起。我不知道你是否控制了HTML,但是也許你可以在最後的li中添加一個類或者id並且以這種方式定位它。或者如果你知道你有多少人,你可以使用'+'來保持目標兄弟姐妹一直下降。 – Slime

相關問題