2013-01-15 7 views
6

Vorrei allineare sia i numeri che il testo nel mio <ol>. Questo è quello che sto cercando di realizzare:Sinistra allinea entrambi i numeri di elenco e il testo

enter image description here

Per ora, ogni <li> contiene un <a>, ma questo può cambiare. Finora ho provato a mettere il pad sinistro e quindi un trattino di testo sullo <a>.

Ecco il mio codice al momento.

HTML:

<ol class="dinosaurs"> 
    <li><a>Dinosaur</a></li> 
    <li><a>Tyrannosaurus</a></li> 
    <li><a>Camptosaurus</a></li> 
</ol> 

CSS:

.dinosaurs{ 
    list-style-position: inside; 
} 

NOTA: sto vedendo la pagina web in Chrome 23 su Windows 7.

+0

Non è già questo quello che stai facendo? http://jsfiddle.net/j08691/LRV5x/1/ – j08691

+0

@ j08691 No. Osserva la differenza tra il punto in cui inizia il testo in # 9 e # 10. – dmr

+0

Quindi rimuovere la regola di posizione stile elenco non è quello che ti serve? http://jsfiddle.net/j08691/LRV5x/2/ – j08691

risposta

9

È possibile posizionare gli elementi della lista in questo modo:

.dinosaurs { 
    list-style-position: inside; 
} 

.dinosaurs li{ 
    position: relative; 
} 
.dinosaurs li a { 
    position: absolute; 
    left: 30px; 
} 

quale dovrebbe fornire http://jsfiddle.net/wBjud/2/

+2

Non funziona su voci multilinea – user2846569

1

Prova ad aggiungere padding-left: 0; al vostro stile, e cambiando list-style-position: a outside se necessario.

+0

'list-style-position: outside' right allinea i numeri – dmr

+1

Ah, lo screenshot non era ancora attivo. Tieni presente che la posizione stile elenco non allinea i numeri tanto quanto indica l'elenco in cui comparire in relazione al riquadro di delimitazione. https://developer.mozilla.org/en-US/docs/CSS/list-style-position – alanmoo

1

Si può fingere mediante il posizionamento, padding e margini.

jsFiddle example

.dinosaurs { 
    list-style-position: inside; 
    position:relative; 
    margin-left: -20px; 
} 
a { 
    position:absolute; 
    left:70px; 
} 
+0

Non funziona su intestazione multilinea – user2846569

13

Questo sembra funzionare:

.dinosaurs { counter-reset: item } 
.dinosaurs li { display: block } 
.dinosaurs li:before { 
    content: counter(item) ". "; 
    counter-increment: item; 
    width: 2em; 
    display: inline-block; 
} 
+0

Davvero bello vedere una soluzione flessibile qui. Questo non si romperà come le soluzioni utilizzando il posizionamento assoluto se gli elementi si avvolgono. – cimmanon

+3

@cimmanon Posso fare in modo che questo funzioni un po 'meglio (ciò che ford ha mostrato non funziona così bene per le liste con testo a capo) impostando il LI in posizione: relativo; e il: before to position: absolute; e posizionandolo in questo modo. [esempio jsFiddle] (http://jsfiddle.net/NU48L/) –

+0

@BartS. Ho appena effettuato l'accesso per ringraziare. Penso che questa dovrebbe essere la risposta. Grande! – cyonder

Problemi correlati