2011-04-06 20 views
17

我想這HTML ...如何使用CSS爲靜態字符串添加有序列表項號碼?

<ol style="list-style:decimal;"> 
<li>Apples</li> 
<li>Oranges</li> 
</ol> 

...來呈現這樣

Q1。 Q2。蘋果
Q2。橘子

換句話說,我希望自動生成的數字前綴爲靜態字符串「Q」。

我已經試過CSS是這樣的:

ol li:before 
{ 
    content:"Q"; 
} 

但是產生這樣的:

  1. QApples
  2. QOranges

我用「還試圖列表 - 樣式:內部編號;「,但只是將列表向右移動,結果相同。我無法找到一種方法來引用自動生成的數字元素以任何方式向他們添加CSS樣式信息。這似乎是這樣一個簡單的,常見的情況,但我找不到任何方式用簡單的CSS(沒有CSS計數器,JavaScript等)來完成它。

+0

今天有大量列表編號操作問題。今天早上我關閉了一個,作爲另一個的副本我回答。 – BoltClock 2011-04-06 15:02:17

回答

34

唯一的純CSS的方法是使用counters

ol { 
    counter-reset: item; 
    list-style-type: decimal; 
} 

ol li:before { 
    content: 'Q' counter(item, decimal) '. '; 
    counter-increment: item; 
} 

不能除了使用CSS計數器實現這一目標或JavaScript(正是這種使用情況而設計!)。

順便說一下,it's decimal, not numbered

+0

+1,唯一的辦法,雖然他特別要求不要使用CSS計數器.. – 2011-04-06 14:45:32

+0

謝謝,這可能正是我正在尋找的,它相對簡單。如果實際上這很簡單,我不一定反對使用櫃檯。我唯一的保留是...這是什麼瀏覽器支持? – Triynko 2011-04-06 14:47:16

+0

@Gaby:哎呀,我錯過了。感謝upvote。 @Triynko:那麼,無可否認IE支持是相當差...你可以在這裏測試http://jsfiddle.net/BoltClock/9VdB3 – BoltClock 2011-04-06 14:47:51

2

有一個,脆弱,非計數法,但它不易斷裂:

ol { 
    list-style-type: decimal; 
    margin: 0 0 0 2em; 
} 

li { 
    position: relative; 
} 

ol li:first-letter { 
    color: #f90; 
    float: left; 
    position: relative; 
    margin-left: -2em; 
} 

JS Fiddle demo

+0

是的,我試圖避免不穩定/複雜/不能很好支持的解決方案。櫃檯解決方案穩定/簡單/良好支持。這個例子的脆弱性在於它要求列表號前綴是一個特定的大小(儘管使用像EM這樣的相對單元而不是PX可能有助於使它免受字體大小變化的影響)。我曾經想過使用li的一個類似的解決方案:在{content}之前,但使用硬編碼的偏移量將不支持可變長度的前綴字符串。無論如何還要加1! – Triynko 2011-04-06 15:16:44

相關問題