JavaScript实现淡入淡出
<!DOCTYPE html>
<html>
<head>
<title>css动画</title>
</head>
<body>
<script type="text/javascript">
/**
* 将e转化为相对定位的元素,使之左右“震动”
* 第一个参数可以是元素对象或者元素的id
* 如果第二个参数是函数,以e为参数,他将在动画结束时调用
* 第三个参数指定e震动的距离,默认是5像素
* 第四个参数指定震动多久,默认是500毫秒
*/
function shake( e , oncomplete , distance , time ){
//句柄参数
if(typeof e === "string")
e = document.getElementById(e);
if(!time)
time=500;
if(!distance)
distance = 5;
var orginalStyle = e.style.cssText; //保存e的原始style
e.style.position ="relative"; //使e相对定位
var start = (new Date()).getTime(); //注意:动画的开始时间
animate(); //动画开始 //函数检查消耗的时间,并更新e的位置
//如果动画完成,他将e还原为原始状态
//否则,它更新e的位置,安排他自身重新运行
function animate(){
var now = (new Date()).getTime(); //得到当前时间
var elapsed = now-start; //从开始依赖消耗了多长时间
var fraction = elapsed/time; //是总时间的几分之几 if(fraction < 1 ){ //如果话未完成
//作为动画完成比例的函数,计算e的x位置
//使用正弦函数将完成比例乘以4pi
//所以,他来回往复两次
var x = distance*Math.sin(fraction*4*Math.PI);
e.style.left = x+"px"; //在25毫秒后或在总时间的最后尝试再次运行函数
//目的是为了产生每秒40帧的动画
setTimeout(animate,Math.min(25,time-elapsed));
}
else{ //否则动画完成
e.style.cssText = orginalStyle; //恢复原有样式
if(oncomplete)
oncomplete(e);
}
}
} /**
* 以毫秒级的时间将e从完全不透明淡出到完全透明
* 在调用函数时,假设e是完全不透明的
* oncomplete是一个可选的函数,以e为参数,它将在动画结束时调用
* 如果不指定time,默认是500毫秒
* 该函数在IE中不能正常工作,但也可以修改的能工作
* 除了opacity,IE使用非标准的filter属性
*/
function fadeOut( e , oncomplete , time ){
if( typeof e ==="string")
e = document.getElementById(e);
if(!time)
time = 500; //使用Math.sqrt作为一个简单的“缓存函数”来创建动画
//精巧的非线性,一开始淡出的比较快,然后缓慢了一些
var ease = Math.sqrt; var start = (new Date()).getTime(); //注意;动画开始的时间
animate(); //动画开始 function animate(){
var elapsed = (new Date()).getTime()-start; //消耗的时间
var fraction = elapsed/time; //总时间的几分之几
if(fraction < 1) { //如果动画未完成
var opacity = 1 - ease(fraction); // 计算元素的不透明度
e.style.opacity = String(opacity); //设置在e上
setTimeout(animate,Math.min(25,time-elapsed));
}else{
e.style.opacity = "0";
if(oncomplete) oncomplete(e);
}
}
}
</script>
<button onclick="shake(this,fadeOut)">淡入淡出</button>
</body>
</html>
JavaScript实现淡入淡出的更多相关文章
- javascript 图片淡入淡出效果 实例源代码
代码说明:把代码粘贴好之后,需要更改html代码中的图片路径,即可执行成功.后面还有对js代码的详细说明,希望大家好好消化,好好理解. html源代码: <head> <title& ...
- javascript背景淡入淡出
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- javascript写淡入淡出效果的轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JQ淡入淡出效果
<script type="text/javascript"> //页面淡入淡出 $(document).ready(function() { $('body').hi ...
- javascript 单个图片的淡入淡出效果和多张图片的淡入淡出效果
最近刚好在看之前妙趣网站的javascript 初级运动教程,教程里说设置图片的透明度使用了一个变量.这种方法确实不错,但是燕姐喜欢麻烦.就用自己的理解方法写了一遍.其中也是各种坑.现在先把一个图片的 ...
- javascript淡入淡出效果的实现思路
这个思路是最近写XScroll.js类的时候想明白的.平常我们说的淡入淡出效果,一般分成两部分,一半是淡入,另一半就是淡出了.不过经过分析,我觉得其实只需要一半就行了如题,只有思路,没有代码. 这个思 ...
- javascript多物体运动案例:多物体淡入淡出
javascript多物体运动案例:多物体淡入淡出 任务描述: 补充代码,当鼠标移入红色区域时,该区域透明度逐渐增加至不透明;当鼠标移出该红色区域时,该区域透明度逐渐恢复至初始程度. 效果图: < ...
- 练习:javascript淡入淡出半透明效果
划过无透明 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 图片轮播(淡入淡出)--JS原生和jQuery实现
图片轮播(淡入淡出)--js原生和jquery实现 图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成j ...
随机推荐
- 详解C# Tuple VS ValueTuple(元组类 VS 值元组)
C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化,并且网上也有大量的介绍,这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Val ...
- 6.类似Object监视器方法的Condition接口
在<1.有关线程.并发的基本概念>中,我们利用synchronized关键字.Queue队列.以及Object监视器方法实现了生产者消费者,介绍了有关线程的一些基本概念.Object类提供 ...
- tornado之文件上传的几种形式form,伪ajax(iframe)
1直接form提交给后台处理 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- Win10无法连接远程桌面提示“你的凭据不工作”的三个解决方法
Win10无法连接远程桌面提示"你的凭据不工作"的三个解决方法(转藏) 解决方法一:修改组策略 1.在"开始"窗口运行gpedit.msc,进入计算机配置-&g ...
- 3分钟带你了解PowerShell发展历程——PowerShell各版本资料整理
本文带你了解PowerShell发展历程,顺便整理了一点资料,方便大家查询. Windows PowerShell® 是基于任务的命令行管理程序和脚本语言,专为进行系统管理而设计. 在 .NET Fr ...
- python-广度优先搜索
广度优先搜索 下面我们来来BFS算法策略: 比如:我们要从双子峰---->金门大桥,最短路径如何? 我们利用广度优先搜索来一步步求解,注意广度优先搜索在于的关键在于"广",也 ...
- python中xrange用法分析
本文实例讲述了python中xrange用法.分享给大家供大家参考.具体如下: 先来看如下示例: >>> x=xrange(0,8) >>> print x xra ...
- QT调用百度语音REST API实现语音合成
QT调用百度语音REST API实现语音合成 1.首先点击点击链接http://yuyin.baidu.com/docs/tts 点击access_token,获取access_token,里面有详细 ...
- Vivado2015.4使用教程(一个完成工程的建立)
双击桌面的vivado图标,(可能有点慢) 弹出主菜单界面,点击create new project 这是介绍界面,next~ 添加好工程名,和工程位置,next~ 选择rtl Project,nex ...
- js基础回顾-数据类型和typeof怎么用
js的基本数据类型有六种,undefined.null.number.string.boolean.object. 未定义 空 数字 字符串 布尔 ...