原生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学习笔记-详解in运算符
Sep 13 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
JS动态修改iframe内嵌网页地址的方法
Apr 01 Javascript
JQuery select(下拉框)操作方法汇总
Apr 15 Javascript
AngularJS的内置过滤器详解
May 14 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 Javascript
微信小程序实现图片放大预览功能
Oct 22 Javascript
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 Javascript
详解vue项目打包步骤
Mar 29 Javascript
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
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
两种php调用Java对象的方法
2006/10/09 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
Js中sort()方法的用法
2006/11/04 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
Python的历史与优缺点整理
2020/05/26 Python
Python list和str互转的实现示例
2020/11/16 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
创业计划书六个要素
2013/12/26 职场文书
公积金单位接收函
2014/01/11 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
暑期政治学习心得体会
2014/09/02 职场文书