2013-01-15 74 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