2015-05-29 55 views
0

我有以下代碼,我在其中添加自動內容(從1開始的計數器)到每個li元素中的div項。我對此使用了css:content:counter(step)counter-increment:step如何更改列表項的css內容屬性

一切工作正常,但我希望列表中的最後一個元素顯示自定義文本,而不是計數器值(目前是5)。我試過content:"MyText"但沒有工作。我怎樣才能達到這個列表中的最後一個項目?

請注意,我使用jquery添加最後一個列表項,我必須這樣做。

$(document).ready(function() { 
 
    $('#progressbar').append('<li id="level4" data-levelscore="45" class="done" style="content:\'A\'">Completed</li>'); 
 
});
body { 
 
    background-color: #ccc; 
 
} 
 
#progressbar { 
 
    margin-bottom: 5px; 
 
    overflow: hidden; 
 
    /*CSS counters to number the steps*/ 
 
    counter-reset: step; 
 
} 
 
#progressbar li { 
 
    list-style-type: none; 
 
    color: white; 
 
    text-transform: uppercase; 
 
    font-size: 10px; 
 
    width: 20%; 
 
    float: left; 
 
    position: relative; 
 
    text-align: center; 
 
} 
 
#progressbar li:before { 
 
    content: counter(step); 
 
    counter-increment: step; 
 
    width: 15px; 
 
    line-height: 15px; 
 
    display: block; 
 
    font-size: 10px; 
 
    color: #333; 
 
    background: white; 
 
    border-radius: 3px; 
 
    margin: 0 auto 5px auto; 
 
} 
 
/*progressbar connectors*/ 
 

 
#progressbar li:after { 
 
    content: ''; 
 
    width: 80%; 
 
    height: 2px; 
 
    background: white; 
 
    position: absolute; 
 
    left: -40%; 
 
    top: 7px; 
 
    z-index: 1; 
 
    /*put it behind the numbers*/ 
 
} 
 
#progressbar li:first-child:after { 
 
    /*connector not needed before the first step*/ 
 
    content: none; 
 
} 
 
/*marking active/completed steps green*/ 
 

 
/*The number of the step and the connector before it = green*/ 
 

 
#progressbar li.active:before, 
 
#progressbar li.active:after { 
 
    background: #ffb723; 
 
    color: white; 
 
} 
 
#progressbar li.done:before, 
 
#progressbar li.done:after { 
 
    background: #42aacc; 
 
    color: white; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div style="margin-top: 0.2em; width: 70%; float: left; text-align: left; color: white; "> 
 
    <ul id="progressbar"> 
 
    <li id="level1" data-levelscore="10" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 1">Level 1</li> 
 
    <li id="level2" data-levelscore="25" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 2">Level 2</li> 
 
    <li id="level3" data-levelscore="35" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 3">Level 3</li> 
 
    <li id="level4" data-levelscore="45" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 4">Level 4</li> 
 
    </ul> 
 
</div>

回答

1

如果你只需要添加此規則它爲我做:

#progressbar li:last-child:before{ 
    content: "A"; 
} 
1

$(document).ready(function() { 
 
    $('#progressbar').append('<li id="level4" data-levelscore="45" class="done" style="content:\'A\'">Completed</li>'); 
 
});
body { 
 
    background-color: #ccc; 
 
} 
 
#progressbar { 
 
    margin-bottom: 5px; 
 
    overflow: hidden; 
 
    /*CSS counters to number the steps*/ 
 
    counter-reset: step; 
 
} 
 
#progressbar li { 
 
    list-style-type: none; 
 
    color: white; 
 
    text-transform: uppercase; 
 
    font-size: 10px; 
 
    width: 20%; 
 
    float: left; 
 
    position: relative; 
 
    text-align: center; 
 
} 
 
#progressbar li:before { 
 
    content: counter(step); 
 
    counter-increment: step; 
 
    width: 15px; 
 
    line-height: 15px; 
 
    display: block; 
 
    font-size: 10px; 
 
    color: #333; 
 
    background: white; 
 
    border-radius: 3px; 
 
    margin: 0 auto 5px auto; 
 
    position:relative; 
 
    z-index:2; 
 
} 
 
/*progressbar connectors*/ 
 

 
#progressbar li:after { 
 
    content: ''; 
 
    width: 80%; 
 
    height: 2px; 
 
    background: white; 
 
    position: absolute; 
 
    left: -40%; 
 
    top: 7px; 
 
    z-index: 1; 
 
    /*put it behind the numbers*/ 
 
} 
 
#progressbar li:first-child:after { 
 
    /*connector not needed before the first step*/ 
 
    content: none; 
 
} 
 
/*marking active/completed steps green*/ 
 

 
/*The number of the step and the connector before it = green*/ 
 

 
#progressbar li.active:before, 
 
#progressbar li.active:after { 
 
    background: #ffb723; 
 
    color: white; 
 
} 
 
#progressbar li.done:before, 
 
#progressbar li.done:after { 
 
    background: #42aacc; 
 
    color: white; 
 
} 
 

 
#progressbar li:last-child:before { 
 
content:"CUSTOM"; 
 
width:auto; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div style="margin-top: 0.2em; width: 70%; float: left; text-align: left; color: white; "> 
 
    <ul id="progressbar"> 
 
    <li id="level1" data-levelscore="10" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 1">Level 1</li> 
 
    <li id="level2" data-levelscore="25" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 2">Level 2</li> 
 
    <li id="level3" data-levelscore="35" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 3">Level 3</li> 
 
    <li id="level4" data-levelscore="45" class="done" title="" data-placement="bottom" data-toggle="tooltip" data-original-title="level 4">Level 4</li> 
 
    </ul> 
 
</div>

1

1)更改添加列表項(< li>) id到level5,你有重複的id,那不太好。

2)使用這個CSS更改裏的內容:

li#level5:before { 
    content: 'someText'; 
} 

JS Fiddle