2012-06-14 22 views
2

我有以下的CSS:採取最後的孩子,而不是第一胎上唯一表行

table tbody tr:last-child td { 
    padding-top: 7px; 
    border-bottom: 0; 
} 

table tbody tr:first-child td { 
    padding-top: 6px; 
} 

現在我可以有一個表只有一行。
唯一的錶行現在被分配到first-child而不是last-child,但我希望它是相反的方式。

有沒有沒有Javascript的方法?

+0

「我怎樣才能最後孩子分配給所有​​,而不是第一胎」?你能改述嗎?你在哪裏定義了一個邊界底? – fcalderan

+1

也許是一個愚蠢的問題,但你有沒有嘗試'border-bottom:none;'和'border-bottom:0px;'? – poepje

+0

@poepje:它不會影響表格行,因爲正如我在開發者控制檯中看到的那樣,「first-child」被分配給該行。 @ F.卡爾德蘭:我盡力去做,但是我很難解釋。 –

回答

1

這是不可能的。您的標記必須有一些錯誤。如果它真的是唯一的tr,那麼lastfirst將匹配。

See example

然而,CSS將被應用取決於你的CSS規則的順序。因此,您可以通過相應地放置規則來確定是否應該應用padding-top: 7px;or padding-top: 6px;

編輯:

爲您的問題是由一個插件,它在結束時自動插入行造成的,你可以簡單地使用:nth-last-child(2)到倒數第二個元素相匹配。
(注然而對於nth-last-child該瀏覽器支持比last-child略差)

+0

是的,但他有相同的風格「填充底部「:第一個孩子和最後一個孩子。所以這個規則中的一個只會被應用。它將適用於不同的樣式,如您的示例所示。背景和邊界。 –

+0

你是對的,這是我的錯。正如我在Sófkas的回覆中所說的,這是一個插件的錯誤。我想我現在需要在那裏破解一些東西。 –

+0

@Sófka你可以通過切換CSS規則來解決這個問題。他的問題是,只有在選擇者應用時,這肯定是一個錯誤。 – Christoph

1

你可以制定一個規則,只有當tr是第一個孩子和最後一個孩子在同一時間,並且這個table tbody tr:first-child:last-child td增加了與table tbody tr:last-child td相同的樣式。它將會是這樣的:

table tbody tr:last-child td, 
table tbody tr:first-child:last-child td{ 
    padding-top: 7px; 
    border-bottom: 0; 
}​ 

這裏似乎工作:) - http://jsfiddle.net/HjZU4/

+0

我發現問題的根源,這是棘手的,因爲它是由jQuery的插件觸發的,無論如何感謝:) –

相關問題