左对齐列表编号和文本

dmr*_*dmr 9 html css alignment html-lists

我想把我的数字和文字都对齐<ol>.这就是我想要完成的事情:

在此输入图像描述

目前,每个都<li>包含一个<a>,但可以改变.到目前为止,我尝试了左边填充,然后是文本缩进<a>.

这是我现在的代码.

HTML:

<ol class="dinosaurs">
    <li><a>Dinosaur</a></li>
    <li><a>Tyrannosaurus</a></li>
    <li><a>Camptosaurus</a></li>
</ol>
Run Code Online (Sandbox Code Playgroud)

CSS:

.dinosaurs{
    list-style-position: inside;
}
Run Code Online (Sandbox Code Playgroud)

注意:我正在Windows 7上的Chrome 23中查看网页.

for*_*ord 16

这似乎有效:

.dinosaurs { counter-reset: item }
.dinosaurs li { display: block }
.dinosaurs li:before { 
  content: counter(item) ". ";
  counter-increment: item;
  width: 2em;
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

  • @cimmanon通过将LI设置为position:relative,我可以让这个更好地工作(ford显示对于包装文本的列表效果不佳)并且:在定位之前:绝对; 并以这种方式定位.[jsFiddle示例](http://jsfiddle.net/NU48L/) (6认同)

got*_*les 11

您可以像这样定位列表元素:

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

.dinosaurs li{
  position: relative;
}
.dinosaurs li a {
  position: absolute;
  left: 30px;
}
Run Code Online (Sandbox Code Playgroud)

这会产生http://jsfiddle.net/wBjud/2/

  • 不适用于多行条目 (3认同)

Sha*_*ing 6

现有的答案都不适合我,但通过组合和构建它们,我发现了类似的方法,包括多行条目,不需要列表项内的任何标签:

ol {
    counter-reset: item;
}
li {
    display: block;
    margin-left: 1.7em;
}
li:before {
    content: counter(item) ". ";
    counter-increment: item;
    position: absolute;
    margin-left: -1.7em;
}
Run Code Online (Sandbox Code Playgroud)

看起来像这样: https: //jsfiddle.net/b3dayLzo/

我认为它可以通过将 放在 的li:before左边距来起作用li

您可能想要一个不同的margin-left

上没有类,ol因为在我的例子中,它出现在容器的样式中。