HTML 自定义列表排序(包含非英语字符的字母列表)

标签 html css

我想知道如何创建如下所示的有序列表。

a. Item 1

b. Item 2

c. Item 3

ç. Item 4

...

我认为通常下面的标记应该满足我的要求:

<ol type="a">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li value="ç">Item 4</li>
    ...
</ol>

但它似乎没有效果,它只是给了我常规的排序“a,b,c,d...”

最佳答案

通常情况下,列表不是这样工作的。如果 list-style-typelower-latin,则仅显示小写拉丁字母。在“z”之后,继续“aa”,依此类推。

但是,完全可以通过一些自定义 CSS 来完成您想要的操作。

li[value] {list-style-type:none; position:relative}
li[value]::before {content:attr(value) '. ';
position:absolute; right:calc(100% + .33em);}
<ol type="a">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li value="ç">Item 4</li>
    <li>Item 5</li>
</ol>


抱歉,上述解决方案仅适用于 value 属性是非数字值。如果您输入 value="9" 或其他内容,它将干扰列表其余部分的编号:下一项的值为 10,并且将得到“j”。作为列表标记!

因此,更好的解决方案是单独保留 value 并使用 data 属性。 数据标记或其他东西。那么列表中的其余部分将不会遭受任何后果。

li[data-marker] {list-style-type:none; position:relative}
li[data-marker]::before {content:attr(data-marker) '. ';
position:absolute; right:calc(100% + .33em);}
<ol type="a">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li data-marker="ç">Item 4</li>
    <li>Item 5</li>
</ol>

另外一点:如果您的目的是在非重音字母之间插入重音字母,例如,如果列表看起来像 a、b、c、ç、d 等,那么您将需要使用 value 才能使列表正确显示。乱序的列表项需要重新同步!

li[data-marker] {list-style-type:none; position:relative}
li[data-marker]::before {content:attr(data-marker) '. ';
position:absolute; right:calc(100% + .33em);}
<ol type="a">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li data-marker="ç" value="3">Item 4</li> <!-- Items 3 & 4 both get value 3 for "c" -->
    <li>Item 5</li>
</ol>

关于HTML 自定义列表排序(包含非英语字符的字母列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082868/

相关文章:

html - 在行中显示 10 个 div

css - 在Jinjia2中,如何在html样式中使用变量值?

python - 如何从字符串中多次提取 HTML 标记模式?

html - 使用多个@media (max-width) CSS

html - Flex 元素未包裹

html - 使爆头图像响应

html - 2 Accordion A 和 B 需要 Accordion A 第一类也打开 Accordion B 第一类,反之亦然

javascript - 树遍历问题,查找要可变使用的 div ID - jquery

javascript - 使用 jquery 查找父 html 元素并在其上附加 css 类

css - 如何在同一高度对齐来自不同列的内容?