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;
	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>

  

时间: 2024-10-11 07:34:49

JavaScript实现淡入淡出的相关文章

javascript背景淡入淡出

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/css"&

javascript 图片淡入淡出效果 实例源代码

? 1 代码说明:把代码粘贴好之后,需要更改html代码中的图片路径,即可执行成功.<br>后面还有对js代码的详细说明,希望大家好好消化,好好理解.<br><br>html源代码: 1 <head> 2 <title>图片切换</title> 3 <script type="text/javascript" src="图片切换.js"></script> 4 <l

练习:javascript淡入淡出半透明效果

划过无透明 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>淡入淡出半透明效果</title> <style> img {width:400px;height:200px;opacity: 0.3;filter:alpha(opacity=30)} </style> </he

有关网页常见图片淡入淡出的效果的随笔

网页常见的图片淡入淡出的效果还是比较常见的,在这里,我个人来分享一些自己的一些笔记. <!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>淡入淡出图片效果图</title>    <style type="text/css">        #img1{ filter:alpha(opacity:30); o

jQuery基础(动画篇 animate,显示隐藏,淡入淡出,下拉切换)

1.jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的style属性,这里jQuery提供了一个快捷的方法.hide()来达到这个效果   $elem.hide() 提供参数: .hide( options ) 当提供hide方法一个参数时,.hide()就会成为一个动画方法..hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作

jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画

jQuery效果 隐藏.显示.切换.滑动.淡入淡出.以及动画 1.隐藏与显示(改变:display:none;) hide()--隐藏 show()--显示 toggle()方法:可以使用它来切换hide()与show()方法 eg1:显示 <style type="text/css"> *{margin:0;padding:0;} .body{font-size:12px;font-family:"微软雅黑";color:#666;} .yym{wid

图片的淡入淡出

<html><head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jQuery控制图片淡入淡出效果</title> <script src="jquery-1.7.2.min.js" type="text/javascript" charset=&quo

jQuery 效果 - 淡入淡出

jQuery 拥有下面四种 fade 方法: jQuery fadeIn() 方法jQuery fadeIn() 用于淡入已隐藏的元素. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="jquery-2.2.0.min.js"></script> 5 <script> 6 $(document).ready(function(){ 7 $("butto

Javascrip 淡入淡出思路

这个思路是最近写XScroll.js类的时候想明白的.平常我们说的淡入淡出效果,一般分成两部分,一半是淡入,另一半就是淡出了.不过经过分析,我觉得其实只需要一半就行了 如题,只有思路,没有代码. 这个思路是最近写XScroll.js类的时候想明白的.平常我们说的淡入淡出效果,一般分成两部分,一半是淡入,另一半就是淡出了.不过经过分析,我觉得其实只需要一半就行了. 比如写一个图片切换类,切换效果是淡入淡出,通常我们会这样写:当切换发生的时候,当前显示的图片淡出(渐渐隐藏),将要显示的图片淡入(渐渐