700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JS_鼠标移入移出渐变效果(类似css3中的transition或animation和@keyframes)

JS_鼠标移入移出渐变效果(类似css3中的transition或animation和@keyframes)

时间:2023-07-05 18:42:27

相关推荐

JS_鼠标移入移出渐变效果(类似css3中的transition或animation和@keyframes)

分享一下之前做的渐变效果(由于最近正好处于温故而知新状态,所以整理以前的po上来的随笔会比较多。

通过js实现的。

传递给函数的内容主要有,需要改变的对象、改变的属性、目标值、以及是否有回调函数。

可以实现物体的不同样式的链式变化,和不同样式的同时变化。

废话不多说,贴上Js代码(附上注释):

<script>//获取obj样式为attrs的值function getStyle(obj,attrs){//IEif(obj.currentStyle){return obj.currentStyle[attrs];}//其他else{return getComputedStyle(obj,false)[attrs];}}//obj:对象,iTarget:变化目标,attrs:变化的属性function startMove(obj,json,fn){var flag = true;//停止计时器 clearInterval(obj.timer);//开始计时器 obj.timer = setInterval(function(){for(var attrs in json){//获取到的对应的属性的值var Styles = getStyle(obj,attrs);//如果属性为透明度,取浮点数if(attrs == "opacity"){//Math.round四舍五入cur = Math.round(parseFloat(Styles)*100);}else{cur = parseInt(Styles);}//速度变量,缓冲变化var speed = (json[attrs] - cur)/8;//让speed为整数 speed = speed>0 ? Math.ceil(speed) : Math.floor(speed);//判断停止运动的位置if(cur != json[attrs]){flag = false;}//如果属性是透明度if(attrs == "opacity"){obj.style.filter = "alpha(opacity:"+(cur+speed)+")";obj.style.opacity = (cur+speed)/100; }else{obj.style[attrs] = cur+speed+"px";}}if(flag){clearInterval(obj.timer);//判断是否为链式运动,如果传了函数进来,则先执行函数if(fn){fn();}}}, 30)}</script>

效果图:

以上内容,如有错误请指出,不甚感激。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。