CSS列表计数器增加级别

时间:2015-04-20 22:25:12

标签: html css css-counter

HTML

<ol>
  <li>item1
    <ol>
      <li>item2</li>
    </ol>
  </li>
  <li>item1
    <ol>
      <li>item2</li>
      <li>item3</li>
    </ol>
  </li>
</ol>

SCSS

ol {
  counter-reset: item;
  li {
    display: block
  }
  li:before {
    content: counters(item, ".") ". ";
    counter-increment: item
  }
}

现在列表的排序如下:

  
      
  1. ITEM1
  2.         

    1.1。 ITEM2

         
        
    1. ITEM1
    2.         

      2.1。 ITEM2

           

      2.2。项目3

有什么方法可以在列表开始时按一级增加排序吗?第二个<ol>将以2开头: 2.1。 ITEM1

  

1.1。 ITEM1

     

1.1.1。 ITEM2

     

1.2。 ITEM1

     

1.2.1。 ITEM2

     

1.2.2。项目3

-------同一父母的第二个人---------

  

2.1。 ITEM1

     

2.1.1。 ITEM2

     

2.2。 ITEM1

     

2.2.1。 ITEM2

     

2.2.2。项目3

笔在这里:http://codepen.io/simPod/pen/wawOLd

3 个答案:

答案 0 :(得分:4)

你可以设置一个额外的计数器,只在外部列表上更新它(可以通过body > ol选择)

Updated Codepen

body {
  counter-reset: outer;
}
body > ol {
  counter-increment: outer;
}
ol {
  counter-reset: item;
}
ol li {
  display: block;
}
ol > li:before {
  content: counter(outer)"." counters(item, ".")". ";
  counter-increment: item;
}
<ol>
  <li>item1
    <ol>
      <li>item2</li>
    </ol>
  </li>
  <li>item1
    <ol>
      <li>item2</li>
      <li>item3</li>
    </ol>
  </li>
</ol>
<ol>
  <li>item1
    <ol>
      <li>item2</li>
    </ol>
  </li>
  <li>item1
    <ol>
      <li>item2</li>
      <li>item3</li>
    </ol>
  </li>
</ol>

答案 1 :(得分:1)

不确定这是否有用但是;刚刚通过CSS实现了这一点。必须在CSS中指定起始值,以便它可能对您不起作用。

CSS:

       body ol { 
            list-style-type: none;
            counter-reset: level1 50;
        }
        ol li:before {
            content: counter(level1) ". ";
            counter-increment: level1;
        }
        ol li ol {
            list-style-type: none;
            counter-reset: level2;
        }
        ol li ol li:before {
            content: counter(level1) "." counter(level2) " ";
            counter-increment: level2;
        }

在这种情况下,你会得到:

50项目

50.1子项目

答案 2 :(得分:1)

您可以尝试使用反重置属性(http://www.w3schools.com/cssref/pr_gen_counter-reset.asp

你会在封闭元素上声明:counter-reset: section;然后:

ol li { counter-reset: subsection; }
ol li:before {
    counter-increment: section;
    content: counter(section) ".";
}
ol li ol li { counter-reset: subsection; }
ol li ol li:before {
    counter-increment: subsection;
    content: counter(section) "." counter(subsection) ".";
}
etc...