2013-07-18 74 views
0

我:針對li元素?

<ul> 
<li></li> 
<li></li> 
<li></li> 
<li></li> 
<li></li> 
</ul> 

我想不同的寬度添加到每個華里。

我不想這樣做內聯。

我該如何使用CSS2(而不是CSS3)來定位每個li?

有沒有辦法,或者我需要給每個李的類名?

感謝

+0

每個'li'單獨或全部他們一樣嗎? –

+0

每個li需要不同的寬度 – beans

+2

@beans:它看起來很愚蠢,但它是一個純粹的CSS2解決方案。 ** [JSBin Demo](http://jsbin.com/igisid/1/edit)**。 –

回答

0

你也可以用梳子CSS,你必須添加類各立在CSS E:G-

li {} 
li + li {} 
li + li + li {} 
li + li + li + li {} 
li + li + li + li + li {} 
+0

好。只有建議是在每個聲明中使用「li:first-child」作爲第一個li。因爲它消除了CSS的遞歸處理的不必要的數量。當然,我們正在談論的是百萬分之一秒。 :) – ProfileTwist

1

爲什麼不使用nth-of-type

ul li:nth-of-type(1){} /* First */ 
ul li:nth-of-type(2){} /* Seconds */ 

,如果你擔心舊的瀏覽器,有一個很大的library,增加了CSS3僞類給他們。

唯一的CSS2方法是將類添加到每個LI。

編輯

其實每LI不同類別並不是唯一的方式CSS2。 @Hashem Qolami對原始問題的評論有一個體面的CSS2解決方案,但就像他說的,它看起來有點愚蠢。

+0

在CSS2中,你可以像'li + li {/ *樣式爲第二個li和* /} li + li + li {/ *將樣式重置爲默認值,使特殊樣式適用於第二個li只有* /}'等等。但是這種「窮人的孩子選擇者」是非常無效的。 –

+1

'唯一的CSS2方法是將類添加到每個LI'不正確,請檢查我的評論;) –

+1

只有在我發佈此答案後纔看到。你是對的,你的解決方案是最好的方法,而不用改變他的HTML。 – dotty

0

如果你想使用純粹的CSS2,你必須給他們類的名稱。這可以通過:nth-of-type() psuedoclass選擇器來完成,但這是一個CSS3功能。

這對jQuery來說也很簡單(如果你想避免依賴CSS3但不想將類名添加到你的標記中)。這也可以讓你根據需要動態改變寬度(而不是像CSS類那樣硬編碼屬性值)。

0

「每個李」你是指每個李元素單獨?如果是這樣,第n個選擇器可能是你的朋友,儘管它是CSS3。

0

你可以給所有你的李的類名,並設置爲顯示塊,與浮動。

樣品fiddle

li{ 
    display:block; 
    float:left; 
    background:blue; 
} 
li.small{ 
     width:50%; 
} 
li.big{ 
    width:100%; 
}