li { display: block }
li:before { counter-increment: levelone }
body > ol { counter-reset: levelone }
body > ol > li:before { counter-increment: levelone }
body > ol > li:before { content: counter(levelone, decimal ) " "; }
body > ol[data-type="A"] > li:before { content: counter(levelone, upper-latin) " "; }
body > ol[data-type="a"] > li:before { content: counter(levelone, lower-latin) " "; }
body > ol > li > ol { counter-reset: leveltwo }
body > ol > li > ol > li:before { counter-increment: leveltwo }
body > ol > li > ol > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, decimal ) " "; }
body > ol > li > ol[data-type="A"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, upper-latin) " "; }
body > ol > li > ol[data-type="a"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, lower-latin) " "; }
body > ol[data-type="A"] > li > ol > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, decimal ) " "; }
body > ol[data-type="A"] > li > ol[data-type="A"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, upper-latin) " "; }
body > ol[data-type="A"] > li > ol[data-type="a"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, lower-latin) " "; }
body > ol[data-type="a"] > li > ol > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, decimal ) " "; }
body > ol[data-type="a"] > li > ol[data-type="A"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, upper-latin) " "; }
body > ol[data-type="a"] > li > ol[data-type="a"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, lower-latin) " "; }
body > ol > li > ol > li > ol { counter-reset: levelthree }
body > ol > li > ol > li > ol > li:before { counter-increment: levelthree }
body > ol > li > ol > li > ol > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, decimal ) "." counter(levelthree, decimal ) " "; }
body > ol > li > ol > li > ol[data-type="A"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, decimal ) "." counter(levelthree, upper-latin) " "; }
body > ol > li > ol > li > ol[data-type="a"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, decimal ) "." counter(levelthree, lower-latin) " "; }
body > ol > li > ol[data-type="A"] > li > ol > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, upper-latin) "." counter(levelthree, decimal ) " "; }
body > ol > li > ol[data-type="A"] > li > ol[data-type="A"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, upper-latin) "." counter(levelthree, upper-latin) " "; }
body > ol > li > ol[data-type="A"] > li > ol[data-type="a"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, upper-latin) "." counter(levelthree, lower-latin) " "; }
body > ol > li > ol[data-type="a"] > li > ol > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, lower-latin) "." counter(levelthree, decimal ) " "; }
body > ol > li > ol[data-type="a"] > li > ol[data-type="A"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, lower-latin) "." counter(levelthree, upper-latin) " "; }
body > ol > li > ol[data-type="a"] > li > ol[data-type="a"] > li:before { content: counter(levelone, decimal ) "." counter(leveltwo, lower-latin) "." counter(levelthree, lower-latin) " "; }
body > ol[data-type="A"] > li > ol > li > ol > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, decimal ) "." counter(levelthree, decimal ) " "; }
body > ol[data-type="A"] > li > ol > li > ol[data-type="A"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, decimal ) "." counter(levelthree, upper-latin) " "; }
body > ol[data-type="A"] > li > ol > li > ol[data-type="a"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, decimal ) "." counter(levelthree, lower-latin) " "; }
body > ol[data-type="A"] > li > ol[data-type="A"] > li > ol > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, upper-latin) "." counter(levelthree, decimal ) " "; }
body > ol[data-type="A"] > li > ol[data-type="A"] > li > ol[data-type="A"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, upper-latin) "." counter(levelthree, upper-latin) " "; }
body > ol[data-type="A"] > li > ol[data-type="A"] > li > ol[data-type="a"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, upper-latin) "." counter(levelthree, lower-latin) " "; }
body > ol[data-type="A"] > li > ol[data-type="a"] > li > ol > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, lower-latin) "." counter(levelthree, decimal ) " "; }
body > ol[data-type="A"] > li > ol[data-type="a"] > li > ol[data-type="A"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, lower-latin) "." counter(levelthree, upper-latin) " "; }
body > ol[data-type="A"] > li > ol[data-type="a"] > li > ol[data-type="a"] > li:before { content: counter(levelone, upper-latin) "." counter(leveltwo, lower-latin) "." counter(levelthree, lower-latin) " "; }
body > ol[data-type="a"] > li > ol > li > ol > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, decimal ) "." counter(levelthree, decimal ) " "; }
body > ol[data-type="a"] > li > ol > li > ol[data-type="A"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, decimal ) "." counter(levelthree, upper-latin) " "; }
body > ol[data-type="a"] > li > ol > li > ol[data-type="a"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, decimal ) "." counter(levelthree, lower-latin) " "; }
body > ol[data-type="a"] > li > ol[data-type="A"] > li > ol > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, upper-latin) "." counter(levelthree, decimal ) " "; }
body > ol[data-type="a"] > li > ol[data-type="A"] > li > ol[data-type="A"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, upper-latin) "." counter(levelthree, upper-latin) " "; }
body > ol[data-type="a"] > li > ol[data-type="A"] > li > ol[data-type="a"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, upper-latin) "." counter(levelthree, lower-latin) " "; }
body > ol[data-type="a"] > li > ol[data-type="a"] > li > ol > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, lower-latin) "." counter(levelthree, decimal ) " "; }
body > ol[data-type="a"] > li > ol[data-type="a"] > li > ol[data-type="A"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, lower-latin) "." counter(levelthree, upper-latin) " "; }
body > ol[data-type="a"] > li > ol[data-type="a"] > li > ol[data-type="a"] > li:before { content: counter(levelone, lower-latin) "." counter(leveltwo, lower-latin) "." counter(levelthree, lower-latin) " "; }
<ol data-type="A">
<li>one
<ol>
<li>one-one
<ol data-type="a">
<li>one-one-one</li>
<li>one-one-two</li>
</ol>
</li>
<li>one-two
<ol data-type="a">
<li>one-two-one</li>
<li>one-two-two</li>
</ol>
</li>
</ol>
</li>
<li>two</li>
</ol>
type
属性。它不是这样工作的。- https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/ol - Paulie_D