通过闭包和setTimeout让背景颜色从黄变白再变紫红

xiaoxiao2021-02-28  10

CSS的Transition只能计算数值型的变量,但颜色本身其实也是数值,不过遵循的变化规律不同而已。以十六位数字而非RGB表示颜色,可以用JS模拟出COLOR的渐变过程。

技术点:

条件下setTimeout调用自身来渐变。通过设置内部变量作为flag,决定变化的方式。 var b = document.body.style function changeColor (s,interval){ s.backgroundColor = '#ffffcc' var level = 2 var changepoint = false var step = function(){ if(level === -1 && changepoint){ return; } var hex = level.toString(16) if(changepoint){ //console.log('now change') s.backgroundColor = '#ff' + hex + hex + 'ff' } else { s.backgroundColor = '#ffff' + hex + hex } if(level <16 && !changepoint) { level ++ if(level === 16 ) { changepoint = true } } if(level >= 0 && changepoint){ level-- } setTimeout(step,interval) //console.log(level,changepoint) } setTimeout(step,interval) } changeColor(b,50)
转载请注明原文地址: https://www.6miu.com/read-750090.html

最新回复(0)