Sbarazzarsi del contatore dell'ultimo oggetto
-
05-07-2019 - |
Domanda
Ho un fastidioso problema .. Voglio che i miei primi 4 elementi in un elenco siano numerati ma voglio lasciare il quinto oggetto fuori dalla numerazione .. ecco il mio css:
#alternate_navigation ol
{
display:block;
padding:0;
margin:0;
counter-reset: item;
}
#alternate_navigation li
{
display:block;
padding:0px 0px 0px 10px;
margin:0;
background: url('images/list_bg.jpg') no-repeat;
height:19px;
width:99%;
border-bottom:1px solid #B9B5B2;
}
#alternate_navigation li:before
{
content: counter(item) ". ";
counter-increment: item ;
}
RISULTATO:
- Prenotazione online
- Ordine coupon
- Stampa lettere
- Invia e-mail
- Visualizza ordini
Come posso ottenere che l'ultimo elemento non sia numerato in questo modo:
- Prenotazione online
- Ordine coupon
- Stampa lettere
- Invia email
Visualizza ordini
e sì HTML
<div id="alternate_navigation">
<ol>
<li><a href="#">Online Booking</a></li>
<li><a href="#">Coupon Ordering</a></li>
<li><a href="#">Print Letters</a></li>
<li><a href="#">Send Emails</a></li>
<li><a href="#">View orders</a></li>
</ol>
<div>
Grazie per qualsiasi risposta
Soluzione
Dopo il tuo CSS attuale, aggiungi:
#alternate_navigation li:last-child:before {
content: "";
counter-increment: none;
}
Questo dovrebbe "resettare" lo stile dell'ultimo elemento.
EDIT: Vorrei solo ricordare che questo non funzionerà in IE8 a causa dell'uso di : last-child . Se hai bisogno della compatibilità IE6 / 7/8, userei qualcosa come JQuery invece di inserire manualmente il markup HTML.
Altri suggerimenti
È possibile che il browser che stai utilizzando non supporti content
, counter-reset
, :before
o counter-increment
?
Sono abbastanza sicuro che IE non lo faccia e non sono sicuro degli altri. In tal caso, stai semplicemente ricevendo l'elenco numerato predefinito: in breve, il browser ignorerebbe il CSS più recente.
Puoi applicare una classe css per resettare quel contatore, come in questo esempio:
#alternate_navigation li.last:before
{
content: "";
counter-increment: none ;
}
Controlla il mio esempio:
Per curiosità, in questo caso perché stai usando il counter-reset? Perché non impostare
list-style: decimal;
e quindi per il tuo html aggiungi una classe all'ultimo <li>
tag come <li class="last">
?
Quindi puoi impostare
li.last { list-style: none; }