2016-01-01 53 views
0

在HTML/CSS中,是否可以按以下格式排列我的排序列表?HTML排序列表 - 特定订单

o. Item 1 
    i. Item 2 
ii. Item 3 
iii. Item 4 

更一般地说,是否可以创建我自己的有序列表格式?

回答

2

当然,只需添加一个类型即可使用<ol>罗马数字标签。

<ol type="i"> 
    <li>Coffee</li> 
    <li>Tea</li> 
    <li>Milk</li> 
</ol> 

此HTML吐出:

i. Coffee 
ii. Tea 
iii. Milk 

更多信息可以在这里找到:http://www.w3schools.com/tags/att_ol_type.asp

为您o是第一个位置的项目,在第二个项目启动数量和预先设置第一个使用Javascript或jQuery。

+0

唯一的问题是,他希望'o'代表0.与罗马数字类型的有序列表不包括o。 – Li357

+1

嗯,我猜你可以使用Javascript或jQuery预先列出一个项目来获得这种效果,但是你不能在HTML中本地完成它。 – Kris

+0

是的。我想也许是遍历一个列表,但这是OOP。 – Li357

1

所以你想要的是一个任意样式的第一个元素。随后的所有列表项目都应该有一个数字文本,比它们的自然排序暗示的要低。正确?

因此,你的HTML表很简单:

<ol> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
    <li>Item 4</li> 
</ol> 

下面的CSS进行实际的魔力。然而(小缺点),我相信你需要明确设置:before伪元素的宽度,以便类似于“普通”列表的外观。

ol { 
    list-style-type: none; 
} 

li { 
    counter-increment: strangecounter; 
} 

li:before { 
    content: counter(strangecounter, lower-roman) ". "; 
    display: inline-block; 
    width: 2em; 
    text-align: right; 
    margin-right: 0.5em; 
} 

ol :first-child { 
    counter-reset: strangecounter -1; 
} 

ol :first-child:before { 
    content: "o. "; 
} 
+0

非常感谢@morido。这正是我想要做的!我只是有最后一个问题。我在里面使用了txt-align:之前,但是知道我需要在li:之前添加一个右边距。你对我应该使用的价值有什么想法,以便使它像其他名单一样? – ardayigit

+0

我已将我的答案改为使数字文本对齐。您需要使用“填充右值”或“margin-right”值来获得您请求的差距。 – morido