2011-07-05 11 views
13

Sto tentando di estendere un old CSS trick a nuove lunghezze, tenendo conto del futuro sinistro di the Oxford Comma. Mi piace l'Oxford Comma. Voglio i miei elenchi in linea per usarlo. Cioè,elenchi delimitati da virgole con CSS-Voglio una virgola di Oxford!

Vorrei che questo html

<ul id="taglist"> 
    <li>apple</li> 
    <li>orange</li> 
    <li>banana</li> 
</ul> 

di presentarsi come questo:

apple, orange, & banana 

Ora, posso farlo per mostrare come

apple, orange & banana 

usando questo codice 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: " & "; 
} 

ma il problema, si vede, è che non possiamo semplicemente cambiare l'ultima affermazione di content: ", & " perché le liste con solo due articoli saranno sembrare stupido. Come

I like to eat apples, & bananas 

Così, per un elenco di 3 o più, voglio una virgola dopo il secondo-a-ultimo elemento. Per gli elenchi di due, non voglio nessuna virgola.

+1

hai provato il tuo codice con due elementi? Funziona –

+1

Funziona, ma non ha la virgola Oxford. – Andrea

+1

+1 per la virgola Oxford – erroric

risposta

14

Ho aggiunto questa regola in più, sembra di fare ciò che si vuole:

#taglist li:nth-last-child(3) ~ li:nth-last-child(2):after { 
    content: ", & "; 
} 
+5

Perfetto! Non sapevo di [General Sibling Combinator] (http://ajaxian.com/archives/css-general-sibling-combinator-in-action)! Questo può essere ottenuto anche con il Adjacent Sibling Combinator con meno caratteri, usando '#taglist li: nth-last-child (3) + li: after'. – chadoh

4

io non ho abbastanza reputazione da lasciare ancora commenti, ma ho qualcosa da condividere che credo sia utile.

Ho creato una demo di JSfiddle della versione migliorata di chadoh di Taze T. Schnitzel's answer. Ho anche incluso e commentato la risposta originale di Taze e il primo tentativo di risposta di Chadoh. Ecco la demo: http://jsfiddle.net/u7rzA/

+0

Molto utile! Grazie! – chadoh

Problemi correlati