我遇到这种情况:
<div class="price">
<del><span class="amount">100</span></del>
<ins><span class="amount">1000</span></ins>
</div>
<div class="price">
<span class="amount">1000</span>
</div>
我想只为其中有1000个的跨度着色。怎么做?我尝试过伪选择但没有运气。
编辑:解决方案:
.price ins .amount,
.price > .amount{
color:red;
}
答案 0 :(得分:2)
您不能使用CSS来评估元素的内容。你需要使用javascript。
您可以使用此javascript来执行此操作。
var amountEls = document.getElementsByClassName('amount');
for (var i = 0; i < amountEls.length; i++) {
var amount = amountEls[i];
if (amount.innerHTML.indexOf('1000') > -1) {
amount.style.background = 'yellow';
}
}
请参阅此fiddle - 如果您希望文字改变颜色而不是背景,只需将background
更改为color
。
编辑 - 如果这些元素的位置始终是静态的,并且您不定位数字 - 只是第二个和第三个{ {1}}'span' - 然后您可以使用:
.amount
.price ins .amount,
.price + .price .amount {
background: yellow;
}
运算符是相邻的兄弟选择器,在此实例中选择前面带有+
.price .amount
答案 1 :(得分:0)
你可以在加载时使用jQuery(或简单的javascript)颜色,如下所示:
$(document).ready(function({
$(".amount").each(function(){
if(parseInt($(this).html()) >= 1000){
$(this).css('color', 'green');
}
});
}));
答案 2 :(得分:0)
你可以试试这个:
<强> CSS:强>
.price span.amount{color:green;}
.price del span.amount{color:initial;}
答案 3 :(得分:-1)
<div class="price">
<del><span class="amount">100</span></del>
<ins><span class="amount hlt_txt">1000</span></ins>
</div>
<div class="price">
<span class="amount hlt_txt">1000</span>
</div>
和你的CSS
.hlt_txt{color:green;}