【问题标题】:CSS Nesting counters: UL inside OL countCSS 嵌套计数器:UL 内部 OL 计数
【发布时间】:2015-09-04 01:30:08
【问题描述】:

如果ol里面的ol格式如下所示,很容易得到正确的计数

 <ol>
  <li>item</li> 
  <li>item             
    <ol>
      <li>item</li>     
      <li>item</li>    
      <li>item          
    </ol>
  </li>
  <li>item</li>        
  <li>item</li>      
  <li>item
     <ol>
      <li>item</li>      
      <li>item</li>      
      <li>item         
    </ol>
   </li>        
  <li>item</li>       
</ol>

但是,如果我想将 ul 放入 ol 中,我无法让计数器正常工作

  <ol>
  <li>item</li> 
  <li>item             
    <ul>
      <li>item</li>     
      <li>item</li>    
      <li>item          
    </ul>
  </li>
  <li>item</li>        
  <li>item</li>      
  <li>item
     <ul>
      <li>item</li>      
      <li>item</li>      
      <li>item         
    </ul>
   </li>        
  <li>item</li>       
</ol>

http://jsfiddle.net/jaxymnh8/

有没有办法避免计算 ul ?

【问题讨论】:

  • 您在子列表(第 5 项和第 11 项)中的最终列表项上缺少关闭 &lt;/li&gt; 标记

标签: css css-counter


【解决方案1】:

有一个非常简单的方法可以解决它。只需使用 CSS 子选择器 (&gt;),因此计数仅包括 &lt;li&gt;s,它们是 &lt;ol&gt; 的子代。

ol > li::before {
  counter-increment: my;
  content: counter(my) ; 
  margin-right: 10px;
}

http://jsfiddle.net/jaxymnh8/1/

【讨论】:

    【解决方案2】:

    你需要给子li添加一个计数器

    所以你会这样做

    ol,ul {
        list-style:none;
    }
    .count{
        counter-reset: section;
    }
    
    ol>li {
        counter-reset: subsection;
    }
    
    ol>li:before {
        counter-increment: section;
        content: counter(section) ". ";
    }
    
    ul li:before {
        counter-increment: subsection;
        content: counter(section) "." counter(subsection) " ";
    }
    

    JSFIDDLE

    【讨论】:

    • 不需要所有这些代码 :) 看看我下面的答案(除非我错过了什么!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多