我想RGB颜色从蓝色(rgba(0,0,255)
)上JS mouseenter
转换为红色(rgba(255,0,0)
),逐步。JS:从RGB蓝到红RGB
因此,每次鼠标输入一个元素时,它都会“增加”它的背景颜色,从蓝色到绿色再到红色。
随着WIP现场演示:http://codepen.io/enguerranws/pen/ZQOBwe
这是我到目前为止已经完成:
function onGridDone(){
var gridders = document.querySelectorAll('.gridder');
for(var i = 0; i < gridders.length; i++){
gridders[i].addEventListener('mouseenter', onHover);
}
}
function onHover() {
var currentColor = this.style.backgroundColor,
currentColorArr = currentColor.replace(/[^\d,]/g, '').split(',');
R = currentColorArr[0],
G = currentColorArr[1],
B = currentColorArr[2];
console.log(R,G,B);
if(B > 0) B = B-10;
var indic = 255-B;
G = indic/2;
R = indic;
this.style.backgroundColor = "rgb("+R+","+G+","+B+")";
}
我已经试过许多东西,但基本上,我想我的颜色去从rgba(0,0,255)
,然后rgba(0,255,130)
,然后rgba(255,130,0)
,最后rgba(255,0,0)
(所以,从蓝色到绿色,然后从绿色到红色)。
我知道我可以做多个if/else语句来检查每个case,但是我只是在徘徊,如果这是一个更有效的方法使用数学?
我不想做任何动画/转换。
那么第一个问题是,你不能依靠浏览器来给你回颜色的方式,因为你设置它。将当前状态保持在独立于风格的地方会更可靠(更简单)。 – Pointy
为此,最好使用css3转换或动画。 – jcubic
@jcubic如何在转换/动画上“增加”鼠标悬停时的RGB值? – enguerranws