解释函数:
(//this and the bottom closure executes the function inside.
function fade(){//the function is named fade
(s.opacity-=.1)//sets the opacity to current opacity-0.1,
<0? // if the opacity - 0.1 is smaller than 0 ('<' = smaller then)
s.display="none" // set display to none
: // else
setTimeout(fade,40) // set a timer of 40 ms and execute the function fade again
}
)();
这是一种很好的 javascript 方式来玩弄一种风格,但是:
1.它是用javascript认真编写的
使用 css3,您无需使用 javascript 即可获得此类动画,其中很酷的部分是浏览器(带有一些技巧)使用硬件 gpu 加速,因此动画非常流畅。如果您在不支持 css3 的非常旧的浏览器中需要这种类型的动画,那么是的,您需要这个,但还需要一些 polyfill 和使用 ie 过滤器来设置不透明度。
2.它将显示设置为无
如果您打算重用该元素,则将元素设置为 display:none 不是一个好方法。因为如果你想再次显示它必须重新绘制它。
3.它使用一个setTimeout
setTimeout 总是不好的选择。
现在回答:
我不知道你到底想达到什么目标,但是
看看这个例子(这适用于 chrome 和 safari,android 和 ios),但可以更改为适用于大多数浏览器。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>example</title>
<style>
div{
background-color:#fc0;
-webkit-transition:opacity 1500ms ease;
opacity:1;
}
div.hide{
opacity:0;
}
</style>
<script>
var changeclass=function(){
this.classList.add('hide');
}
window.onload=function(){
var firstDiv=document.getElementsByTagName('div')[0];
firstDiv.addEventListener('mouseover',changeclass,false);
}
</script>
</head>
<body>
<div>Hello</div>
</body>
</html>
我为我的元素创建了一个 CSS 类。div
在这个 div 中,我将 css3 属性转换设置为以缓动和 1500 毫秒为不透明度设置动画
和一个额外的课程来隐藏它div.hide
这仅包含设置为 0 的不透明度。
现在在我的示例中,我在鼠标悬停时隐藏元素。
因此,当我的 div 元素已加载(window.onload
)时,我添加了一个事件处理程序(mouseover
)
更改我的 div 元素的类,我称之为changeclass
.