原生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 相关文章推荐
JavaScript中的类继承
Nov 25 Javascript
JavaScript的document对象和window对象详解
Dec 30 Javascript
JS跨域总结
Aug 30 Javascript
jquery中常用的函数和属性详细解析
Mar 07 Javascript
写出高效jquery代码的19条指南
Mar 19 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
Jun 16 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
javaScript手机号码校验工具类PhoneUtils详解
Dec 08 Javascript
使用express来代理服务的方法
Jun 21 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 Javascript
微信小程序实现下拉加载更多商品
Dec 29 Javascript
Javascript之datagrid查询详解
Sep 15 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
星际争霸秘籍
2020/03/04 星际争霸
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
PHP下判断网址是否有效的代码
2011/10/08 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
PDO::getAttribute讲解
2019/01/28 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
vuejs router history 配置到iis的方法
2018/09/20 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
药学职务聘任书
2014/03/29 职场文书
网络编辑求职信
2014/04/30 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
教师职位说明书
2014/07/29 职场文书
中学推普周活动总结
2015/05/07 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL