您可以選擇pure CSS中的一半元素...直到某一點。
唯一的缺點是你必須知道總項目的最大數量。可能是150,但它會再不行用151
在這裏工作是一個演示:http://jsfiddle.net/tcK3F/(*)
最小CSS:
/* selecting half or more items. Up to 6 */
li:first-child:last-child,
li:nth-child(n+2):nth-last-child(-n+2),
li:nth-child(n+3):nth-last-child(-n+3),
li:nth-child(n+4):nth-last-child(-n+4),
li:nth-child(n+5):nth-last-child(-n+5),
li:nth-child(n+6):nth-last-child(-n+6) {
color: white;
background: darkblue;
}
/* selecting half or less items. Up to 6 */
li:nth-child(n+2):last-child,
li:nth-child(n+3):nth-last-child(-n+2),
li:nth-child(n+4):nth-last-child(-n+3),
li:nth-child(n+5):nth-last-child(-n+4),
li:nth-child(n+6):nth-last-child(-n+5),
li:nth-child(n+7):nth-last-child(-n+6){
font-style: italic;
border: 2px solid red;
}
基於一個想法:
訣竅是從AndréLuís在Lea Verou的帖子中看到:Styling elements based on sibling count。我將其改編爲您需要拆分的選擇。
快速的解釋:
:nth-last-child(-n+3)
將選擇從父3件最後物品; :nth-child(n+3)
將選擇除第一個 3個之外的所有項目。將它們結合起來,你可以根據它們後面的內容(或父母中有多少個孩子)來選擇純CSS中的元素。除非你需要將它們中的75個與74個逗號相結合,如果你想讓這個技巧與150個元素一起工作......:)
兼容性是IE9 +(JS polyfills存在)
(*)
的HTML代碼第一部分:偶數的列表項;
第二部分:奇數的列表項
第一CSS規則:將從2N項或最後N + 1從2N/2項+ 1選擇最後N和在白色樣式它們在藍色(例如:在3項共5或6)。
第二個CSS規則:將從2N項目中選擇最後N個或從2N + 1中選擇最後N-1/2個項目,並用紅色邊框和斜體(例如總共4個或5箇中的2個項目)進行樣式設計
Yeah ,你必須使用JavaScript; CSS無法確定有多少個元素或用於指定數量的語法。 – 2013-03-17 22:18:32
那麼,你會選擇所有?剛剛也知道中間在哪裏? – caramba 2013-03-17 22:19:03
@DavidThomas檢查我的答案,確定CSS中有多少元素(鏈接到Lea Verou的帖子)並指定一個數量:':(first/last) - (of-type/child)(aN + b)'允許。除了M個第一個元素外,還有'li + li + li + li'。你不能做的事情是**算術**,並計算一個*真正的*未定義的元素數量(雖然DOM不大可能有未定義數量的元素,在*大多數情況下) – FelipeAls 2013-03-19 07:32:23