2013-01-15 108 views
6

我想將左對齊號和我的<ol>中的文本。這就是我要完成的:將列表號和文本左對齊

enter image description here

目前,每個<li>包含<a>,但可以改變。到目前爲止,我嘗試了在左邊的填充,然後在<a>上進行文本縮進。

這是我現在的代碼。

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

注:我在Windows 7上瀏覽網頁在Chrome 23

+0

這不是已經你在做什麼? http://jsfiddle.net/j08691/LRV5x/1/ – j08691

+0

@ j08691不需要看看文本在#9和#10開頭的區別。 – dmr

+0

因此,刪除列表樣式位置規則不是你所需要的嗎? http://jsfiddle.net/j08691/LRV5x/2/ – j08691

回答

9

你可以定位列表中的元素,像這樣:

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

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

這將產生http://jsfiddle.net/wBjud/2/

+2

不適用於多行條目 – user2846569

1

嘗試增加padding-left: 0;你的風格,並改變如有必要,可以使用list-style-position:outside

+0

'list-style-position:outside' right aligned the numbers – dmr

+1

啊,截圖還沒有結束。請記住,list-style-position並沒有對齊數字,因爲它告訴列表與邊界框相關的出現位置。 https://developer.mozilla.org/en-US/docs/CSS/list-style-position – alanmoo

1

您可以僞造它通過使用定位,填充和利潤。

jsFiddle example

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

不適用於多行條款 – user2846569

13

這似乎工作:

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

真的很高興在這裏看到靈活的解決方案。如果元素包裝,這個不會像使用絕對定位的解決方案那樣打破。 – cimmanon

+3

@cimmanon通過將LI設置爲position:relative,我可以讓這個工作更好一些(對於包含文本的列表,福特顯示效果不佳)和:之前的位置:絕對;並以這種方式進行定位。 [jsFiddle例子](http://jsfiddle.net/NU48L/) –

+0

@BartS。我只是登錄來說聲謝謝。我認爲這應該是答案。大! – cyonder