如何更改列表项的css内容属性
问题描述:
我有以下代码,我在其中添加自动内容(从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>
答
如果你只需要添加此规则它为我做:
#progressbar li:last-child:before{
content: "A";
}
答
$(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)更改添加列表项(< li>) id到level5,你有重复的id,那不太好。
2)使用这个CSS更改里的内容:
li#level5:before {
content: 'someText';
}