If you do not consider it cheating to not use the actual innerHTML
as a condition, but rather construct it from a CSS variable using content
you could do something like this (just as an effort to not use JS in this case):
<num style="--num:1"></num>
<num style="--num:99"></num>
<num style="--num:165"></num>
num {
--breakpoint: 100;
--g: calc((clamp(0, var(--num), var(--breakpoint)) - calc(var(--breakpoint) - 1)) * 255);
color: rgb(0, var(--g), 0);
}
num:after {
counter-reset: variable var(--num);
content: counter(variable);
}
In this scenario I am coloring any of the numbers green if they are above 100, but more rules can be added using the same method to serve your use-case.
With that said, I think there is probably no scenario where this would ever be useful, other than just technical trivia, as it is more readable to simply change the class
of the element dynamically using plain JS. Still kinda fun way to use counter-reset
and counter
though.
Here is the same example on jsfiddle: https://jsfiddle.net/msz1aouc/24/