& lt; meter>动画生命条颜色改变
<meter> Color Change on Animation Health Bar
我正在制作一个生命值条,我希望使用<meter>
。我让它工作了,除了它的颜色不会随着它的减少而改变。我想我可以用if
树来解决这个问题,但我不知道如何改变栏的颜色,当它达到特定的宽度。什么好主意吗?谢谢! !
小提琴:http://jsfiddle.net/Thaikhan/d018xzbj/13/
HTML:<meter id="your_meter" min="0" low="30" optimum="100" high="50" max="100" value="80"> </meter>
<input type="submit" id="byBtn" value="Change" onclick="change()"/>
JavaScript: function change(){
setTimeout(function () {
var start = $('#your_meter').attr('value');
var end = 55;
if (start > 50) {
//STARTING FROM GREEN
if (end < 50) {
//CONTINUE PAST GREEN
var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = "#your_meter::-webkit-meter-optimum-value { transition: width 3s; width: 50% !important; }";
document.body.appendChild(css);
//CHANGE COLOR AND CONTINUE TO DECREASE///??????????????????
if (end < 30) {
//CONTINUE PAST YELLOW
}
else {
//STOP BEFORE YELLOW ENDS
setTimeout(function() {
var css2 = document.createElement("style");
css2.type = "text/css";
css2.innerHTML = "#your_meter::-webkit-meter-optimum-value { transition: width 3s; width: "+end+"% !important; }";
document.body.appendChild(css2);
}, 3000);
}
}
else {
//STOP BEFORE GREEN ENDS
var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = "#your_meter::-webkit-meter-optimum-value { transition: width 3s; width: "+end+"% !important; }";
document.body.appendChild(css);
}
}...
原因是因为当您通过CSS更新仪表最佳值时,您没有更新仪表实际使用的值。
你将需要动态地更新仪表的值,而你正在更新CSS值。你可以这样做:
document.getElementById("your_meter").value = "30";
那么,要做你想做的事情就像这样:
function change(){
var end = 35;
var meter = document.getElementById("your_meter");
var current = meter.value;
function render(){
console.log(meter.value);
if(current <= end){
window.cancelAnimationFrame(render);
return;
}
meter.value = current - 1;
current = meter.value;
window.requestAnimationFrame(render);
}
window.requestAnimationFrame(render);
render();
}
基于动态时间:
function change(){
var end = 35;
var meter = document.getElementById("your_meter");
var current = meter.value;
var interval;
var speed = 30;
function render(){
console.log(meter.value);
if(current <= end){
clearInterval(interval);
return;
}
meter.value = current - 1;
current = meter.value;
window.requestAnimationFrame(render);
}
interval = setInterval(render, speed);
}
相关文章:
- 在用Javascript更改背景颜色后:hover don'不要改变颜色
- 如何使用Javascript点击后使形状改变颜色
- 如果我在jquery移动中使用“onclick”,按钮不会改变颜色
- 如何在红绿灯序列中改变颜色
- 按下箭头键时 JS Div 不会改变颜色
- 单击按钮时,背景会改变颜色
- html按钮不会改变颜色
- 当我用鼠标点击身体区域时,那个li标签是如何改变颜色的
- 根据变量onclick改变颜色选择器的值
- 根据值改变颜色
- svg改变颜色属性
- Raphael:如何添加改变颜色的点击动作
- 改变颜色的文本点击使用jQuery
- 根据一天中的时间来改变颜色
- 如何改变颜色时,用户滚动
- 改变颜色的标签和Div周围输入+标签点击
- 如何每秒遍历数组,使h1元素每秒改变颜色
- 为什么我的画布对象在setInterval()被调用后不改变颜色?
- 选择改变颜色图案不会显示
- 避免导航条切换器在选择时改变颜色