2017-06-20 72 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