2017-06-20 76 views
1

我已经看到了你可以使用各种类型的计数器,作为公认的回答这个问题描述:CSS Pseudo Element Counters: can you increment an alphabet letter "a", "b", "c", etc instead of a number?CSS计数器:你可以通过非整数(即浮点数)增加吗?

但是,是否有可能通过一个浮动,例如递增0.5?这将使的,比如说一个列表,3.0,3.5,4.0,4.5,等

这是我一直试图做的,没有用:

.values li:before { 
    content: counter(step); 
    counter-increment: step 0.5; 
} 

step后的值不如果它是一个浮点数(只有在整数时)。

如果这是不可能的,是否有另一种方法,我可以用它来按需编程设置<li>元素?

谢谢。

回答

2

您可以与多个规则和nth-child

ul { 
 
    counter-reset: numbers; 
 
    list-style-type: none; 
 
} 
 

 
li:before { 
 
    padding-right: 1em; 
 
} 
 

 
li:nth-of-type(2n+1)::before { 
 
    counter-increment: numbers; 
 
} 
 

 
li:nth-child(odd)::before { 
 
    content: counters(numbers, "") ".0"; 
 
} 
 

 
li:nth-child(even)::before { 
 
    content: counters(numbers, "") ".5"; 
 
}
<ul> 
 
    <li>Lorem</li> 
 
    <li>Lorem</li> 
 
    <li>Lorem</li> 
 
    <li>Lorem</li> 
 
    <li>Lorem</li> 
 
    <li>Lorem</li> 
 
</ul>

+0

伟大的解决方案。我接受这个,因为它使用纯粹的CSS,作为所要求的问题。 – Alacritas

0

CSS可能不是你可以使用的最好的东西。尝试使用JavaScript:

var children = document.getElementById("values").children; 
 
var value = 1; 
 
for(var i = 0; i < children.length; i++) { 
 
    var child = children[i]; 
 
    child.innerHTML = value + " " + child.innerHTML; 
 
    value += 0.5; 
 
}
<ul id="values"> 
 
<li>Item 1</li> 
 
<li>Item 2</li> 
 
<li>Item 3</li> 
 
<li>Item 4</li> 
 
</ul>

+0

这是做一个好办法。作为参考,这样我结束了做这个(我使用的反应)是这样的: ''' {values.map(值=> { 回报(

  • {}值
  • ) })} ''' 其中'values'是一个包含步骤的数组(从for循环开始,以min值开始并以最大值结尾,每次添加step值创建)。 – Alacritas

    0

    你可以做到这一点没有任何黑客,CSS支持假货此功能。您需要添加几个counters内容值。

    ol { 
     
        counter-reset: section; 
     
        list-style-type: none; 
     
        counter-reset: subsection; 
     
        counter-increment: section; 
     
    } 
     
    
     
    li::before { 
     
        counter-increment: subsection 5; 
     
        content: counter(section) "." counter(subsection) " "; 
     
    }
    <ol> 
     
        <li>item</li> 
     
        <li>item  
     
        <ol> 
     
         <li>item</li> 
     
         <li>item</li> 
     
         <li>item</li> 
     
        </ol> 
     
        </li> 
     
        <li>item</li> 
     
        <li>item</li> 
     
    </ol>

    +0

    有趣的方法,虽然你写的不完全是因为它不是每次加0.5,而是在小数点后加5。所以当第二个计数器达到10时,它应该增加第一个计数器并回复到0.它应该是1,1.5,2,2.5,3等。不是1,1.5,1.10,1.15,1.20,1.25 ..这不是小数点的工作方式。 – Alacritas

    +1

    我怀疑可以通过纯CSS完成你的要求,但是如果你使用SASS或其他预处理器,可能是通过@if语句完成的。如果你问,我会寻找答案。但在这种情况下,我猜最容易的答案。 –

    +0

    是的,我认为接受的答案是一个很好的解决方法。无需重新发明轮子!我实际上正在使用SCSS,但是最重要的答案仍然运作良好。谢谢! – Alacritas