Ответ 1
Я добавил это дополнительное правило, оно, похоже, делает то, что вы хотите:
#taglist li:nth-last-child(3) ~ li:nth-last-child(2):after {
content: ", & ";
}
Я пытаюсь расширить старый трюк CSS до новых длин, принимая во внимание зловещее будущее Оксфордская запятая. Мне нравится Оксфордская запятая. Я хочу, чтобы мои встроенные списки использовали его. То есть
Мне нужен этот html
<ul id="taglist">
<li>apple</li>
<li>orange</li>
<li>banana</li>
</ul>
чтобы показать это:
apple, orange, & banana
Теперь я могу заставить его отображаться как
apple, orange & banana
используя этот CSS:
#taglist {
display: inline;
list-style: none;
}
#taglist li {
display: inline;
}
#taglist li:after {
content: ", ";
}
#taglist li:last-child:after {
content: "";
}
#taglist li:nth-last-child(2):after {
content: " & ";
}
но проблема заключается в том, что мы не можем просто изменить этот последний оператор на content: ", & "
, потому что списки только с двумя будут выглядеть глупо. Как
I like to eat apples, & bananas
Итак, для списка из 3 или более, я хочу запятую после второго-последнего элемента. Для списков из двух я не хочу запятой.
Я добавил это дополнительное правило, оно, похоже, делает то, что вы хотите:
#taglist li:nth-last-child(3) ~ li:nth-last-child(2):after {
content: ", & ";
}
У меня нет достаточной репутации, чтобы оставлять комментарии, но мне есть что поделиться, что я считаю полезной.
Я сделал JSfiddle демо chadoh улучшенной версии Taze T. Schnitzel answer. Я также включил и прокомментировал оригинальный ответ Taze и первую попытку ответа на вопрос. Вот демо: http://jsfiddle.net/u7rzA/