原生js实现fadein 和 fadeout淡入淡出效果


Posted in Javascript onJune 05, 2014

js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。

先来看看设置透明度的兼容性代码:

function setOpacity(ele, opacity) { 
if (ele.style.opacity != undefined) { 
///兼容FF和GG和新版本IE 
ele.style.opacity = opacity / 100; } else { 
///兼容老版本ie 
ele.style.filter = "alpha(opacity=" + opacity + ")"; 
} 
}

关于有的小伙伴这样写:
function setOpacity(ele, opacity) { 
if (document.all) { 
///兼容ie 
ele.style.filter = "alpha(opacity=" + opacity + ")"; 
} 
ele { 
///兼容FF和GG 
ele.style.opacity = opacity / 100; 
} 
}

我想说这样在IE10下运行有问题,点了之后没反应。因为IE10支持opacity属性不支持filter了,这个方法不可取。

fadein 函数代码:

function fadein(ele, opacity, speed) { 
if (ele) { 
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity; 
v < 1 && (v = v * 100); 
var count = speed / 1000; 
var avg = count < 2 ? (opacity / count) : (opacity / count - 1); 
var timer = null; 
timer = setInterval(function() { 
if (v < opacity) { 
v += avg; 
setOpacity(ele, v); 
} else { 
clearInterval(timer); 
} 
}, 500); 
} 
}

fadeout 函数代码:
function fadeout(ele, opacity, speed) { 
if (ele) { 
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100; 
v < 1 && (v = v * 100); 
var count = speed / 1000; 
var avg = (100 - opacity) / count; 
var timer = null; 
timer = setInterval(function() { 
if (v - avg > opacity) { 
v -= avg; 
setOpacity(ele, v); 
} else { 
clearInterval(timer); 
} 
}, 500); 
} 
}

下面给一个demo示例:
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
<script type="text/javascript" src="fade.js"></script> 
<script type="text/javascript"> window.onload = function () { 

document.getElementById('Button1').onclick = function () { 
fadeout(document.getElementById('DV'), 0, 6000); 
} 
document.getElementById('Button2').onclick = function () { 
fadein(document.getElementById('DV'), 80, 6000); 
} 
} 
</script> 
</head> 
<body> 
<div id="DV" style="background-color: green; width: 400px; height: 400px;"></div> 
<input id="Button1" type="button" value="button" /> 
<input id="Button2" type="button" value="button" /> 
</body> 
</html>

有什么更好的实现方式可以留言。。。
Javascript 相关文章推荐
JS Timing
Apr 21 Javascript
js中的前绑定和后绑定详解
Aug 01 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
微信公众号 摇一摇周边功能开发
Dec 08 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
Aug 11 Javascript
Bootstrap-table使用footerFormatter做统计列功能
Sep 07 Javascript
javascript的事件触发器介绍的实现
Jun 05 #Javascript
javascript中attribute和property的区别详解
Jun 05 #Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
Jun 05 #Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 #Javascript
javascript数组去重方法终极总结
Jun 05 #Javascript
javascript设计模式之解释器模式详解
Jun 05 #Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 #Javascript
You might like
新闻分类录入、显示系统
2006/10/09 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
jquery延迟对象解析
2016/10/26 Javascript
wap手机端解决返回上一页的js实例
2016/12/08 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
在vue-cli中组件通信的方法
2017/12/16 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
Python Flask-web表单使用详解
2017/11/18 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
天游软件面试
2013/11/23 面试题
工作室成员个人发展规划范文
2014/01/24 职场文书
工程承诺书怎么写
2014/05/24 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏