2013-01-15 6 views
6

Ich möchte links die Zahlen und den Text in meinem <ol> ausrichten. Das ist, was ich versuche zu erreichen:Links richten Sie beide Listennummern und Text

enter image description here

Vorerst jeder <li> eine <a> enthält, aber das kann sich ändern. Bisher habe ich versucht, linkes Padding und dann einen Text-Einzug auf die <a> zu setzen.

Hier ist mein Code ab sofort.

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; 
} 

HINWEIS: Ich sehen die Web-Seite in Chrome 23 auf Windows 7.

+0

Ist das nicht schon, was Sie tun? http://jsfiddle.net/j08691/LRV5x/1/ – j08691

+0

@ j08691 Nein. Betrachten Sie den Unterschied zwischen wo der Text in # 9 und # 10 beginnt. – dmr

+0

Das Entfernen der Listenpositionsregel ist also nicht das, was Sie brauchen? http://jsfiddle.net/j08691/LRV5x/2/ – j08691

Antwort

9

Sie können die Listenelemente wie so positionieren:

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

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

die http://jsfiddle.net/wBjud/2/

+2

Funktioniert nicht auf mehrzeiligen Einträgen – user2846569

1

Versuchen padding-left: 0; zu Ihrem Stil das Hinzufügen und Ändern list-style-position: bis outside falls erforderlich.

+0

'list-style-position: outside' right richtet die Zahlen aus – dmr

+1

Ah, der Screenshot war noch nicht fertig. Denken Sie daran, dass die Listenstilposition die Zahlen nicht so weit ausrichtet, dass sie der Liste angibt, wo sie in Bezug auf ihre Begrenzungsbox angezeigt werden soll. https://developer.mozilla.org/en-US/docs/CSS/list-style-position – alanmoo

1

ergeben würden Sie fälschen kann es durch die Verwendung Positionierung, Polsterung und Margen.

jsFiddle example

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

Funktioniert nicht auf mehrzeiligen Ganzzahlen – user2846569

13

Dies scheint zu funktionieren:

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

Wirklich schön, hier eine flexible Lösung zu sehen. Dieser wird nicht wie die Lösungen brechen, die absolute Positionierung verwenden, wenn die Elemente umbrechen. – cimmanon

+3

@cimmanon Ich kann diese ein wenig besser arbeiten (was ford gezeigt hat, funktioniert nicht so gut für Listen mit Umbruch Text), indem Sie die LI auf Position: relative; und das: vor zu positionieren: absolut; und es so positionieren. [jsFiddle Beispiel] (http://jsfiddle.net/NU48L/) –

+0

@Barts. Ich habe mich gerade eingeloggt, um Danke zu sagen. Ich denke, das sollte die Antwort sein. Groß! – cyonder