原生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 TextArea动态显示剩余字符
Oct 22 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
Mar 13 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
jquery实现两个图片渐变切换效果的方法
Jun 25 Javascript
jQuery中trigger()与bind()用法分析
Dec 18 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
Angular2 父子组件通信方式的示例
Jan 29 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 Javascript
element-ui多文件上传的实现示例
Apr 10 Javascript
vue fetch中的.then()的正确使用方法
Apr 17 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 jQuery
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 的几个配置文件函数
2006/12/21 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
小程序实现搜索框
2020/06/19 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
Python 错误和异常小结
2013/10/09 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
浅谈Python 对象内存占用
2016/07/15 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
python得到电脑的开机时间方法
2018/10/15 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
政风行风评议心得体会
2014/10/21 职场文书
党小组鉴定意见
2015/06/02 职场文书
MySQL存储过程及语法详解
2022/08/05 MySQL